合并两个有序数组
1°题目链接
2°思路
思路1:定义第三个数组 第一个数组和第二个数组中的元素进行比较 然后下标++ 继续比较并存放到第三个数组 最后再拷贝回nums1
可以实现 但是可不可以不使用第三个数组
而且直接nums1比较大小 谁小谁先存会覆盖一些数据
思路2:找到对应下标 倒着存 如果正着存的话会覆盖原来的数据
谁大谁先存
如果nums1先存完 就把nums2剩下的存起来
如果nums2先存完 nums1不需要动 就是有序的
每存完一个 下标要自减 同时存的下标也要自减
3°实现
void merge(int* nums1, int nums1Size, int m, int* nums2,int num2Size, int n)
{
int end1 = m - 1;
int end2 = n - 1;
int end = m + n - 1;
while (end1 >= 0 && end2 >= 0)
{
if (nums1[end1] > nums2[end2])
{
nums1[end--] = nums1[end1--];
}
else
{
nums1[end--] = nums2[end2--];
}
}
while (end2 >= 0)
{
nums1[end--] = nums2[end2--];
}
}
4°运行结果
#5合并两个有序数组#完