Merge Sorted Array. [easy]

链接:
Merge Sorted Array

题意:混合插入有序数组。
分析:
一开始没看懂题意,就先把两个数组合并再输出,没有注意合并后的数组的长度为m+n;
可以从后往前附值,比较nums1和nums2最后一个元素的大小,把大的那一个放入m+n-1的位置中, 以此类推。如果nums1中所有元素都比nums2中的大,就把nums2填入剩下的位置中。如果nums1中所有元素都比nums2中小,那么前m个还是原来nums1的元素。

public:
    void merge(vector& nums1, int m, vector& nums2, int n) {
        int c = m + n - 1;
        m--;
        n--;
        while(m >=0 && n >= 0)
        {
            nums1[c--] = nums1[m] > nums2[n] ? nums1[m--] : nums2[n--];
        }
        while (n >= 0)
        {
            nums1[c--] = nums2[n--];
        }
    }
};

你可能感兴趣的:(Merge Sorted Array. [easy])