文章目录
- 1.前言
- 2.题目
- 2,代码思路
- 3.参考代码
1.前言
上次我们做了移除元素这道题,下来我们看一下合并两个有序数组
2.题目
2,代码思路
创建三个变量,创建三个变量,分别是n1,n2,n3,分别指向nums1[m-1],nums2[n-1],nums1[nums1Size-1],三个变量所对对应的数组值进行交换,把大的值放到后面。
(1)如果nums1[n1]>=nums2[n2],那么将nums1[n3]=nums1[n2]。反之将nums1[n3]=nums[n1]。同时n1,n2,n3要往后移动,结束的标志是,n1和n2只要遍历完两个数组之一。
(2)
如果出现这种情况,遍历完会发现,
nums2数组都没有遍历,那么还要将nums2中数据遍历一遍。
3.参考代码
void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {
int l1=m-1;
int l2=n-1;
int l3=nums1Size-1;
while(l1>=0&&l2>=0)
{
if(nums2[l2]>nums1[l1])
{
nums1[l3--]=nums2[l2--];
}else
{
nums1[l3--]=nums1[l1--];
}
}
while(l2>=0)
{
nums1[l3--]=nums2[l2--];
}
}
完