题意:混合插入有序数组。
分析:
一开始没看懂题意,就先把两个数组合并再输出,没有注意合并后的数组的长度为m+n;
可以从后往前附值,比较nums1和nums2最后一个元素的大小,把大的那一个放入m+n-1的位置中, 以此类推。如果nums1中所有元素都比nums2中的大,就把nums2填入剩下的位置中。如果nums1中所有元素都比nums2中小,那么前m个还是原来nums1的元素。
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
int c = m + n - 1;
m--;
n--;
while(m >=0 && n >= 0)
{
nums1[c--] = nums1[m] > nums2[n] ? nums1[m--] : nums2[n--];
}
while (n >= 0)
{
nums1[c--] = nums2[n--];
}
}
};