合并两个有序列表
题目描述:
思路:
- 常规思路:
- 不创建新的数组的方式,按照题目要求,
放在数组nums1中
注意当end1先结束,nums2还有剩余数据,需要继续赋值,因为本身就是升序数组,直接赋值就好。
代码:
void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n){
int end1=m-1;
int end2=n-1;
int i=n+m-1;
//有一个结束就结束了
while(end1>=0&&end2>=0)
{
if(nums2[end2]>nums1[end1])
{
nums1[i]=nums2[end2];
end2--;
i--;
}
else
{
nums1[i]=nums1[end1];
i--;
end1--;
}
}
//nums2先结束,nums2的数据都拷贝过去了,不需要处理
//但是,当nums1先结束,说明nums2好有剩余数据,i,end1,需要--。将nums2的数据放进去,因为是升序数组,nums1,先结束说明num1的第一个比nums2的剩余的大
while(end2>=0)
{
nums1[i]=nums2[end2];
i--;
end2--;
}
}