思路:双指针的思路,一个指向第一个数组,另一个指向另一个数组,往后遍历,注意的是这里需要新建一个数组作为中间变量来存放数据。类似于归并排序中的合并排序。
代码如下:
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
//中间变量进行存储
vector<int>res(n+m,0);
int i=0,j=0,k=0;
while(i<m&&j<n){
res[k++] = nums1[i]<nums2[j]?nums1[i++]:nums2[j++];
}
while(i<m){
res[k++]=nums1[i++];
}
while(j<n){
res[k++]=nums2[j++];
}
nums1=res;
}
};