Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.
Note:
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.
合并两个已经排序好的数组,num1的空间有m+n这麽大。将nums2的数据存入nums1中,一开始我的想法是从nums1[0]开始更新但是这样会丢失数据,因此应该从nums1[m+n-1]开始,然后观察nums2中是否还有数据,然后将其全部存入nums1中。
class Solution
{
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n)
{
int len1=m-1;
int len2=n-1;
int k=m+n-1;
while(len1>=0&&len2>=0)
{
if(nums1[len1]<nums2[len2])
{
nums1[k]=nums2[len2];
len2--;
}
else
{
nums1[k]=nums1[len1];
len1--;
}
k--;
}
while(len2>=0)
{
nums1[k]=nums2[len2];
k--;
len2--;
}
return;
}
};