Merge Sorted Array
利用nums1向量的空间将已经排序的nums1和nums2合并并排序。
归并排序,一篇比较清晰的文章:https://www.cnblogs.com/DSNFZ/articles/7745785.html
我的答案:
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
int i = m - 1, j = n - 1, k = m + n - 1;
while(k >= 0){
if (i < 0){
nums1[k--] = nums2[j--];
}else if (j < 0){
nums1[k--] == nums1[i--];
}else if (nums1[i] < nums2[j]){
nums1[k--] = nums2[j--];
}else {
nums1[k--] = nums1[i--];
}
}
}
};
一个简介的答案:
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
int i = m - 1, j = n - 1, tar = m + n - 1;
while (j >= 0) {
nums1[tar--] = i >= 0 && nums1[i] > nums2[j] ? nums1[i--] : nums2[j--];
}
}
};