88. Merge Sorted Array
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.
默认了升序.
重点是在数组尾部插入元素:int i = m - 1, j = n - 1, k = m + n - 1;
还有就是A中元素若比B多,就不管了,A中元素们都在正确位置,但若B元素多需赋值到A中, 这点处理需注意.
(O(n)) time, (O(1)) space.
照葫芦画瓢代码:
void merge(vector<int>& A, int m, vector<int>& B, int n) {
int i = m - 1, j = n - 1, k = m + n - 1;
while (i >= 0 & j >= 0)
A[k--] = A[i] > B[j] ? A[i--] : B[j--];
while (j >= 0) //A多不管,元素在正确位置,B多得管
A[k--] = B[j--];
}