题目
给定两个有序的整数数组 nums1 和 nums2,把 num2 合并到 nums1 使之成为一个有序数组。
注意:
你可以假设 nums1 有足够的空间(数组大小 >= m + n)保存 nums2 的元素,nums1 和 nums2 里初始化的元素个数分别为 m 和 n。
难度:容易
编程语言:C++
分析
程序框架为:
|
|
思路:
- 把 nums1 复制到 backup1
- 清空 nums1
- 把 backup1 和 nums2 合并到 nums1
3.1. 使用 i1 和 i2 表示遍历 backup1 和 nums2 元素的索引
3.2. 如果 backup1[i1] < nums2[i2],nums1.push_back(backup1[i1++]),否则 nums1.push_back(nums2[i2++])
3.3. 重复第 3.2 步,直到 i1 到达 backup1 末尾,或 i2 到达 nums2 末尾
3.4. 把第 3.3 步中剩下的其中一个数组,按顺序 push_back 到 nums1
代码如下:
|
|
提交到 Leetcode,Wrong Answer! 导致错误的输入是:[0], 0, [1], 1,我的输出是 [0,1],正确答案应输出 [1]。为什么 [0] 没有 merge 到 nums1?按照题意,应该是只 merge nums1 前 m 个已初始化的元素,和 nums2 前 n 个已初始化的元素。修改后的代码如下:
|
|
提交到 Leetcode,Accepted! :) 运行时间为 6ms。