leetcode-88-merge sorted array

题目

合并两个排好续的数组,使得合并后的数组仍是排好续的,其中数组num1,存储的数据为m个,num2存储n个,num1的存储空间大于m+n,返回合并后结果num1

分析

对于num1和num2从最后一个数开始比较,依次存放到num1的最后面(起始地址是m+n-1)

C++代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
public:
void (vector<int>& nums1, int m, vector<int>& nums2, int n) {
int i = m - 1;
int j = n - 1;
int k = m + n -1;
while(i >= 0 && j >= 0){
if(nums1[i] < nums2[j])
nums1[k--] = nums2[j--];
else
nums1[k--] = nums1[i--];
}
while(j >= 0)
nums1[k--] = nums2[j--];
}
};