程序員面試金典 10.1

Sorted Merge:給定兩個已經排好序的數組AB,將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--;
        }
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章