程序员面试金典 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--;
        }
    }
};
发布了194 篇原创文章 · 获赞 2 · 访问量 7707

猜你喜欢

转载自blog.csdn.net/RayoNicks/article/details/105509415