LeetCode(88)
合并两个有序数组
解题思路:
大致思路是,从后往前倒序比较两个数组大小,选取大的填充到nums1的尾部,从后往前可以避免移动数组元素。
如果nums2处理完了,num1剩余元素是不需要处理的,所以遍历的时候只需要遍历nums2,但是比较大小之前要判断num1是否处理完,避免数组越界。
void merge(vector<int>& nums1,vector<int>nums2,int m,int n)
{
int index=m+n-1;
while(n)
{
if(m==0)
{
nums1[index--]=nums2[--n];
}
else if(nums1[m-1]>nums2[n-1])
{
nums1[index--]=nums1[--m];
}
else
{
nums1[index--]=nums2[--n];
}
}
}