88. 合并两个有序数组
思路:平常的时候都是从小到大来合并,这次我们从大到小来合并,合并的数组保存在nums1中,我们倒着来合并,就不会覆盖nums1中没有遍历过的数,妙。
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
int i=m-1,j=n-1;
int top=m+n-1;
while(i>=0&&j>=0){
if(nums1[i]>=nums2[j]){
nums1[top--]=nums1[i--];
}else{
nums1[top--]=nums2[j--];
}
}
while(i>=0){
nums1[top--]=nums1[i--];
}
while(j>=0){
nums1[top--]=nums2[j--];
}
}
};