为了将nums2的数放到nums1后面,可以将nums1的m个数和nums2的n个数进行比较,按照从大到小的顺序从右向左放入nums1中。
最后输出的数组共有m+n个元素,所以最后一个元素的下标为k=m+n-1。每次k--,都要num1[m[和nums2[n]比较,大的数放到nums1[k],同时m--或n--。因为m与n不一定相等,所以要考虑如果其中一个数减为零时,另一个数组的数按顺序插入nums1剩余位置。
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
int k = m+n-1;
m--;
n--;
for(;k>=0;k--){
if(m>=0&&n>=0&&nums1[m]>nums2[n]){
nums1[k]=nums1[m];
m--;
}
else if(m>=0&&n>=0&&nums1[m]<=nums2[n]){
nums1[k]=nums2[n];
n--;
}
else
break;
}
for(;n>=0;n--)
{
nums1[k]=nums2[n];
k--;
}
}
};
标签:&&,--,力扣,int,88,数组,nums1,nums2
From: https://blog.csdn.net/weixin_72031249/article/details/143635997