两个排序的数组nums1和nums2.。进行排序合并到nums1, nums1有足够的空间。
难度:【easy】
思路:
对两个数组倒序比较,因为如果按照正序进行比较,nums2的元素需要往nums1里面插入时,nums1中对应位置及其后面的所有元素就需要向后面移动,所以这里选择倒序排序比较好。
时间复杂度O(m+n)
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
int k = m + n - 1;
int i = m - 1;
int j = n - 1;
while(i >= 0 && j >= 0) {
if (nums1[i] <= nums2[j]) {
nums1[k--] = nums2[j--];
} else {
nums1[k--] = nums1[i--];
}
}
while (j >= 0) {
nums1[k--] = nums2[j--];
}
}
};