一开始准备使用插入排序,后来想到两个数组排序,既然题中给出的数组预留了后半段空间,不如从后往前使用归并排序。
注意两个数组的长度可能不同,最后可能需要单独处理nums2,将他的值全部赋到num1中
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
if(n==0)
return;
int len=m+n-1;
m--;
n--;
while(n>=0&&m>=0){
if(nums1[m]>=nums2[n]){
nums1[len]=nums1[m];
m--;
}
else{
nums1[len]=nums2[n];
n--;
}
len--;
}
while(n>=0){
nums1[len]=nums2[n];
n--;
len--;
}
}
};
带带大程序员
发布了5 篇原创文章 · 获赞 0 · 访问量 251
私信
关注