题目描述
给定两个有序数组,把两个数组合并为一个。
解题思路
由于题目要求不借助第三个数组,合并到 nums1
上,就用尾指针,然后逐一比较,运用归并排序的思想来解答。最后判断一下 nums2
数组是否还存在元素,若存在,直接放入(因为数组是有序的)。
AC
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
int pos = m+n-1;
m-=1,n-=1;
while(m>=0&&n>=0){
nums1[pos--] = nums1[m] > nums2[n]? nums1[m--]:nums2[n--];
}
while(n>=0) nums1[pos--] = nums2[n--];
}
};
学如逆水行舟,不进则退