題目描述
給定兩個有序數組,把兩個數組合併爲一個。
解題思路
由於題目要求不借助第三個數組,合併到 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--];
}
};
學如逆水行舟,不進則退