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--];
}
};