LeetCode 88. MergeSortedArray(Easy)【玩轉雙指針】

題目描述

給定兩個有序數組,把兩個數組合併爲一個。

解題思路

由於題目要求不借助第三個數組,合併到 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--];
    }
};
學如逆水行舟,不進則退
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章