归并排序。不同的是这个要存在数组A里。我们发现数组A是一个m+n长度的数组,也就是说m之后的内容全部为0。因此可以利用这一点倒着归并,将结果保存在A内。
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
int i = m - 1, j = n - 1, tar = m + n - 1;
while (j >= 0) {
nums1[tar--] = i >= 0 && nums1[i] > nums2[j] ? nums1[i--] : nums2[j--];
}
}
};