1 合并两个有序数组
链接:力扣-合并两个有序数组
2 思路
2.1 情况1
数组
num1[m]={1,2,3,0,0,0}
num2[n]={2,5,6}
2.2 情况2
数组
num1[m]={2,2,3,0,0,0};
num2[n]={1,1,5};
3 代码
综上:num1[m]
与 num2[n]
谁大,把谁放在num1[m+n-1]
时间复杂度O(M+N)
空间复杂度O(1)
void merge(int* nums1, int nums1Size,
int m, int* nums2, int nums2Size, int n)
{
int num = 0;
while (m > 0 && n >0)
{
num = m + n - 1;
if (nums1[m-1] < nums2[n-1]) // nums 2 大
{
nums1[num] = nums2[n-1];
n--;
}
else // nums 1 大
{
nums1[num] = nums1[m-1];
m--;
}
}
while (n > 0) // nums 1已为空(m减到0)
{
num = m + n - 1;
nums1[num] = nums2[n - 1];
n--;
}
}