大家好,我是小鸭酱,博客地址为:http://www.cnblogs.com/xiaoyajiang
这个题目是归并算法中的归并这一步。明确题目是要求归并到nums1中,可以考虑倒序比较两个元素。
代码如下:
1 class Solution { 2 public: 3 void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { 4 int i = m-1; 5 int j = n-1; 6 int k = m + n - 1; 7 while (j >= 0 && i >= 0) 8 { 9 if (nums1[i] < nums2[j]) 10 { 11 nums1[k--] = nums2[j--]; 12 } 13 else if (nums1[i] > nums2[j]) 14 { 15 nums1[k--] = nums1[i--]; 16 } 17 else 18 { 19 nums1[k--] = nums1[i--]; 20 nums1[k--] = nums2[j--]; 21 } 22 } 23 while (j >= 0) 24 { 25 nums1[k--] = nums2[j--]; 26 } 27 } 28 };