思路1:
直接暴力,创建一个跟numsize1一样大的数组space,然后把两个数组每个数按顺序进行比较后填入space数组,最后再把space数组复制到nums1数组
void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n){
int* space=(int*)malloc(sizeof(int)*nums1Size);
int i=0;
int j=0;
int k=0;
while(i<m&&j<n){
if(nums1[i]<nums2[j]){
space[k++]=nums1[i++];
}
else{
space[k++]=nums2[j++];
}
}
while(i<m)
space[k++]=nums1[i++];
while(j<n)
space[k++]=nums2[j++];
for(int l=0;l<k;l++)
nums1[l]=space[l];
}
思路2:在解析看到一个很简练的方法
void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n){
while(n>0){
if(m==0||nums1[m-1]<nums2[n-1]){
nums1[--nums1Size]=nums2[--n];
}
else{
nums1[--nums1Size]=nums1[--m];
}
}
}