You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold additional elements from nums2. The number of elements initialized in nums1 and nums2 are m and n respectively.
很容易的水题,就是需要注意分三种情况。代码如下:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { //i指向合并数组中最大的数应该存放的位置 int i=m+n-1; //j指向nums1的最大的数 int j=m-1; //k指向nums2的最大的数 int k=n-1; while(i>=0) { if (j>=0&&k>=0) { if (nums2[k]>nums1[j]) { nums1[i]=nums2[k]; k--; } else { nums1[i]=nums1[j]; j--; } } else if (j>=0) { nums1[i]=nums1[j]; j--; } else if (k>=0) { nums1[i]=nums2[k]; k--; } i--; } }
原文地址:http://blog.csdn.net/lsh_2013/article/details/45850785