当前位置: 首页 > news >正文

【LeetCode】88.合并两个有序数组

题目

给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。

请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。

注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。

示例 1:

输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3
输出:[1,2,2,3,5,6]
解释:需要合并 [1,2,3] 和 [2,5,6] 。
合并结果是 [1,2,2,3,5,6] ,其中斜体加粗标注的为 nums1 中的元素。

示例 2:

输入:nums1 = [1], m = 1, nums2 = [], n = 0
输出:[1]
解释:需要合并 [1] 和 [] 。
合并结果是 [1] 。

示例 3:

输入:nums1 = [0], m = 0, nums2 = [1], n = 1
输出:[1]
解释:需要合并的数组是 [] 和 [1] 。
合并结果是 [1] 。
注意,因为 m = 0 ,所以 nums1 中没有元素。nums1 中仅存的 0 仅仅是为了确保合并结果可以顺利存放到 nums1 中。

提示:

  • nums1.length == m + n
  • nums2.length == n
  • 0 <= m, n <= 200
  • 1 <= m + n <= 200
  • -109 <= nums1[i], nums2[j] <= 109

进阶:你可以设计实现一个时间复杂度为 O(m + n) 的算法解决此问题吗?

解答

源代码

class Solution {public void merge(int[] nums1, int m, int[] nums2, int n) {int index = m + n - 1;while (n != 0) {if (m == 0) {System.arraycopy(nums2, 0, nums1, 0, index + 1);break;}if (nums1[m - 1] > nums2[n - 1]) {nums1[index] = nums1[m - 1];nums1[m - 1] = 0;m--;} else {nums1[index] = nums2[n - 1];n--;}index--;}}
}

总结

从前往后合并对于数组来说很麻烦,那就另辟蹊径,从后往前合并,当nums2中元素全部放入nums1中时合并结束。

http://www.lryc.cn/news/128863.html

相关文章:

  • 05 - 研究 .git 目录
  • MySQL之索引和事务
  • ⛳ 将本地已有的项目上传到 git 仓库
  • ADB常用命令整理(全网最全)
  • BBS项目day02、注册、登录(登录之随机验证码)、退出登录、密码加密加盐、首页(导航条、模态框,修改密码)
  • HTML5+CSS3自用笔记
  • 无则插入有则更新(PostgreSQL,MySQL,Oracle、SqlServer)
  • 常见的 JavaScript 框架比较
  • 基于R语言APSIM模型进阶应用与参数优化、批量模拟
  • AMD卡启动Stable Diffusion AI绘画的方法
  • Ubuntu系统kubeadm安装K8S_v1.25.x容器使用docker(K8S_v1.24版本以后依然使用docker容器管理)
  • 【MaxKey对接一】对接gitlab的oauth登录
  • 【Buildroot】构建根文件系统等
  • 利用css动画和定时器setTimeout,实现上传图片进度条
  • 关于VScode插件,你不得不知道的几件事
  • MySQL 奇遇记三则
  • UI设计师的主要职责说明(合集)
  • SOLIDWORKS 2023中装配体配合的正确使用方法 硕迪科技
  • 代码随想录——96.不同的二叉搜索树
  • 智安网络|零信任安全框架:保障数字化时代网络安全的最佳实践
  • Rancher管理K8S
  • 【Linux】一切皆文件
  • C++学习笔记4
  • x11 gtk qt gnome kde 之间的区别和联系
  • MAC访问MySQL下的data目录
  • WebMagic - 创意前端项目集合(点击链接可在电脑上查看效果)
  • 黑马项目一阶段面试58题 苍穹外卖业务逻辑15题
  • C++学习笔记总结练习: 字符串类MyString的实现
  • 测试人进阶技能:单元测试报告应用指南
  • 非2的幂次的ASTC纹理格式尺寸对带宽的影响