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.
归并两个有序数组,当然不能用现成的函数。
从结尾开始扫描,先放大的数,这样可以避免覆盖前面的空间。
代码语言:javascript复制class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
int e1=m-1,e2=n-1,e3=m n-1;
while(e1>=0 || e2>=0)
{
if(e1==-1)
nums1[e3--]=nums2[e2--];
else if(e2==-1)
nums1[e3--]=nums1[e1--];
else if(nums1[e1]>nums2[e2])
nums1[e3--]=nums1[e1--];
else
nums1[e3--]=nums2[e2--];
}
}
};