Leetcode春のイベントデーパンチ:10.01顔の質問アレイマージソート

Leetcode春のイベントは、日をパンチ:質問10.01をの顔マージソート配列

Leetcode春のイベントは、日をパンチ:質問10.01をの顔マージソート配列

思考

この質問は、もともと二つの配列を命じました。ダブルポインタとして完成対象僕らはそう。

Aは、それ自体を予約し、十分なスペースので、私たちは逆二重ポインタ、すなわち下降運動を行い、最終的にアレイAカバーから直接始まります。これは、追加の一時的な配列への必要性参照を排除します。

かかわらず、配列Aの有効な値は上書きされますかどうかの。配列Aの状況の位置ではなく、次の場合には十分有効な値をカバーしたときにのみ表示されますので。

口で言うだけなら簡単です 。私のコードを表示します。

class Solution {
public:
    void merge(vector<int>& A, int m, vector<int>& B, int n) {
        int p=m-1,q=n-1,cnt=A.size()-1;
        while(p>=0&&q>=0){
            if(A[p]<=B[q]) A[cnt--]=B[q--];
            else if(A[p]>B[q]) A[cnt--]=A[p--];
        }
        while(q>=0) A[cnt--]=B[q--];
        while(p>=0) A[cnt--]=A[p--];
    }
};

おすすめ

転載: www.cnblogs.com/cell-coder/p/12400301.html