Sorted Merge:給定兩個已經排好序的數組A
和B
,將B
合併到A
中。
如果從數組頭部開始合併,則需要開闢額外的空間,或者批量移動A
中的元素,所以應該從數組尾部合併,也就是從大到小合併。
class Solution {
public:
void merge(vector<int>& A, int m, vector<int>& B, int n) {
int lastA = m - 1, lastB = n - 1, curr = m + n - 1;
while(lastB >= 0){
if(lastA >= 0 && A[lastA] > B[lastB]){
A[curr] = A[lastA];
lastA--;
}
else{
A[curr] = B[lastB];
lastB--;
}
curr--;
}
}
};