题解:
1.直接把后面的添加进去,在排序
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
if(m==0)nums1=nums2;
if(n==0)return;
int j = nums1.size();
//添加
while(n--){
int i = 0;
nums1[--j] = nums2[n];
}
//冒泡
j = nums1.size();
for(int i = 0 ; i < j -1; i++){
for( int k = 0 ; k < j - i - 1 ; k++){
if(nums1[k] > nums1[k+1]) swap(nums1[k],nums1[k+1]);
}
}
}
};
2.倒序判断添加
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
//边界判断
int i = m - 1;
int j = n - 1;
int c = m + n - 1;
//由于两边都是有序的,所以直接同时比较即可
while(i >= 0&& j >= 0){
nums1[c--] = nums1[i] <= nums2[j] ? nums2[j--]:nums1[i--];
}
//扫尾
while(j >= 0 ) nums1[c--] = nums2[j--];
}
};
评论区