88. 合并两个有序数组 - 力扣(LeetCode)
令我十分意外地是,这题竟然也曾经写过,但我却没有思路,罪该万死。
代码语言:javascript复制void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {
//nums1Size:nums1数组的长度
//nums2Size:nums2数组的长度
int l1=m-1;
int l2=n-1;
int l3=m n-1;//合并后盾num1索引
while(l1>=0&&l2>= 0)//只要有一个条件为假,就跳出循环
{
if(nums1[l1]<nums2[l2])
{
nums1[l3--]=nums2[l2--];
}
else
{
nums1[l3--]=nums1[l1--];
}
}
//出了循环有两种情况:l1大于等于0或者l2大于等于0,不存在l1和l2同时大于等于0的情况
//只需要处理一种情况,那就是l2大于等于0,说明l2中的数据还没有完全放入num1中
while(l2>=0)
{
nums1[l3--]=nums2[l2--];
}
//此时nums1中包含了nums2中的数据,num1为升序数组
}