leetcode 88. Merge Sorted Array

合并到一个新的数组,直接比较就好了,这个题目是将nums1、nums2合并到nums1,nums1有许多多余的空间

如果按照合并到一个新的数组从小比到大的方式进行比较,就需要每次挪动nums1的数组。

本题可以采用从大到小的比较方式,这样就不用每次挪动数组。

同时注意,m和n都是可以为0的,nums1不能为空,但nums2可以为空

最后只有while(n > 0),因为如果保留的是m >0,就保持原来的数组就好了

class Solution {
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
        if(nums1.empty() || nums2.empty())
            return;
        while(m > 0 && n > 0){
            if(nums1[m-1] < nums2[n-1]){
                nums1[m + n -1] = nums2[n - 1];
                n--;
            }
            else{
                nums1[m + n - 1] = nums1[m - 1];
                m--;
            }
        }
        while(n > 0){
            nums1[n - 1] = nums2[n - 1];
            n--;
        }
        return;
    }
};
原文地址:https://www.cnblogs.com/ymjyqsx/p/10726741.html