Merge Sorted Array

思路:当从前遍历nums1时每一次需要移动数组下标后所有元素,但是直接从后向前遍历则可以避免这种情况,这里需要注意nums1是空的情况

class Solution {
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
        int ia=m-1, ib=n-1, cur = m+n-1;
        while(ia >= 0 && ib >= 0)
            nums1[cur--] = (nums1[ia] > nums2[ib]) ? nums1[ia--] : nums2[ib--];
        
        //in case nums1 is empty
        while(ib >= 0)
            nums1[cur--] = nums2[ib--];
    }
};

 

posted @ 2017-03-28 18:57  chengcy  Views(85)  Comments(0)    收藏  举报