題意:混合插入有序數組或渤。
分析:
一開始沒看懂題意辈毯,就先把兩個數組合并再輸出,沒有注意合并后的數組的長度為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--];
}
}
};