特点
尽可能的不占用额外的数组空间,因为第一个数组容量很大
思想
核心思想在于从两个数组中先挑选较大的数字,放入数组1靠后的位置,这样不会覆盖数组1中的数字
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
int k = m + n - 1;
m--, n--;
while (m >=0 && n >= 0) {
if (nums2[n] < nums1[m]) {
nums1[k--] = nums1[m--];
}
else {
nums1[k--] = nums2[n--];
}
}
while (n>=0) {
nums1[k--] = nums2[n--];
}
}
};
类似的题目:
合并两个有序链表