题目大意:给出两个升序数组,将他们合并成一个升序数组
分析:数组双指针的应用。利用好数组1后面的空余空间,每次取出两数组中的较大值存在数组1的空余空间的最后一位。
代码:转载自https://www.cnblogs.com/aezero/p/4821167.html
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
int i1 = m - 1, i2 = n - 1, k = m + n - 1; //k存放目前数组1、2中的较大值
while (i1>= 0 && i2>=0){
if (nums1[i1] < nums2[i2]) {
nums1[k--] = nums2[i2--];
}
else{
nums1[k--] = nums1[i1--];
}
}
while (i2 >= 0){ //可能此时数组2的最大值都比数组1的最小值小(数组1从后往前遍历结束还没添加完数组2)
nums1[k--] = nums2[i2--];
}
return;
}
};