1.合并两个有序数组
1.写这道题的时候首先想到的就是双指针,一开始就想无脑像其他双指针题目一样,从头开始,结果画图的时候,发现不对劲,由于不是开辟新的空间,盲目插入可能会造成数据的覆盖,所以需要从后面开始
2.当其中一个走完时如果是num1剩余的话不用重新插入,因为函数最终返回的也是num1
void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {
nums1Size = nums1Size - 1;
nums2Size = nums2Size - 1;
while(m && n)
{
if(nums1[m- 1] > nums2[n - 1])
{
nums1[nums1Size--] = nums1[m - 1];
m--;
}
else{
nums1[nums1Size--] = nums2[n - 1];
n--;
}
}//nums1不会剩下,因为nums1就是本身,nums2会剩下,所以要拷贝。
if(n)
{
while(n)
{
nums1[nums1Size--] = nums2[n - 1];
n--;
}
}
}