jsは安全ブラシのオファー(スタックプッシュ、ポップ配列)を証明するために使用しました

タイトル説明

整数の2つの入力配列、押圧スタック順序を表す第1の配列は、それが第二の配列のポップアップスタックの順序が可能であるか否かを判断します。スタックが等しいと仮定されている上に全ての数字は、押されていません。1,2,3,4,5の配列の配列がスタックに押し込まれるような、プッシュシーケンスがポップの配列に対応する4,5,3,2,1配列が、4,3,5,1,2シーケンスのポップアップシーケンスをプッシュすることは不可能です。(注:2つのシーケンスの長さが等しいです)

考え

スタックについての最初の話に、補助スタックプッシュトラバーサル順序を借りて、ここで1、決定され、その後、上部要素は、これが4であり、第1の要素のスタック順序から外れない、その≠4は明らかです私たちは、同じスタックの開始後までプッシュし続けるためには、スタックに等しくなくなるまで、スタックは要素であり、それは、バック1を移動し、補助スタックが空でない場合はそのサイクルYazhan順トラバーサルは、完了です記載される配列は、ポップ・ポップ・スタックの順序ではありません。

例えば:

1,2,3,4,5を描きます

スタック4,5,3,2,1

最初の補助スタック、スタック1≠4、継続スタック2に1

このとき、スタック2≠4は、3をスタックし続けます

このとき、スタック3≠4,4は、スタックし続けます

この時点で、この場合のバックスタック4 = 4、スタック4、ポップアップ配列、補助スタック5 1,2,3内部,,

このとき、スタック3≠5、5プッシュを続けます

この時点で5 =スタック5、スタック5、ポップアップ配列バック、この場合、補助スタック2,3で3 ,,

...。

実装に続いて、最後に補助スタックが空です。そうでない場合は、空のポップ記載される配列は、ポップ・スタックの順序ではありません。

ネットワークリンクオフ牛

JSコード

function IsPopOrder(pushV, popV)
{
    // write code here
    if (pushV.length === 0) return true
    const stack = []
    for (let i of pushV){
        stack.push(i)
        while (stack[stack.length-1] === popV[0] && stack.length !== 0){
            stack.pop()
            popV.shift()
        }
    }
    return stack.length === 0 ? true : false
}

おすすめ

転載: www.cnblogs.com/dpnlp/p/yongjs-shua-jian-zhioffer-zhan-de-ya-ru-dan-chu-xu.html