IF-2つの配列を結合する


質問する
昇順に並ぶ2つの配列のプログラム
記入してください.

Input1Input2Output[1,3,5][2,3,6,7,9][1,2,3,3,5,6,7,9]
回答とレビュー
  • 単純に2つの配列を合わせた後、sortリットル順に並べ替えると、草自体は簡単ですが、並べ替えられた配列を並べ替える必要があるため、効率は高くありません.
  • そこで,今回の問題は二重ポインタアルゴリズムにより解いた.2つのポインタ
  • があり、各ポインタは1つの配列の要素を指します.
  • の昇順でソートする必要があるため、2つのポインタのより小さいポインタが指す値を新しい配列に挿入し、ポインタの位置を右に1つ移動します.この操作を繰り返します.
  • の両方のポインタが所与の配列の範囲を超えている場合、ループは停止される.
  • 草自体は簡単ですが、紙に直接描く動作が遅く、時間を無駄にしています.
  • コード#コード#
    const solution = (array1, array2) => {
        let lIndex = 0;
        let rIndex = 0;
        const result = [];
        
        while(true){
            let lPointer = array1[lIndex];
            let rPointer = array2[rIndex];
    
            if(!lPointer && !rPointer) break;
            
            if(lPointer <= rPointer || !rPointer) {
                result.push(lPointer);
                lIndex++;
            }
            if(rPointer <= lPointer || !lPointer) {
                result.push(rPointer);
                rIndex++;
            }
    
        }
    
        return result;
    }