//while循环写法 classSolution { public: voidmerge(vector<int>& nums1, int m, vector<int>& nums2, int n){ int k = m + n - 1; int i = m - 1, j = n - 1; while (i >= 0 && j >= 0) { if (nums1[i] >= nums2[j]) { nums1[k] = nums1[i]; i--; k--; } else { nums1[k] = nums2[j]; j--; k--; } } while (i >= 0) { nums1[k] = nums1[i]; i--; k--; } while (j >= 0) { nums1[k] = nums2[j]; j--; k--; } } };
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
//for循环写法 classSolution { public: voidmerge(vector<int>& nums1, int m, vector<int>& nums2, int n){ for (int i = m + n - 1; i >= 0; --i) { if (n == 0 || m != 0 && nums1[m - 1] >= nums2[n - 1]) { nums1[i] = nums1[m - 1]; m--; } else { nums1[i] = nums2[n - 1]; n--; } } } };