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