棧的壓入彈出序列

Q:輸入兩個整數(shù)序列,第一個序列表示棧的壓入順序,判斷第二個序列是否為該棧的彈出序列,假設(shè)壓入棧的所有數(shù)字均不相等。
A:如果下一個彈出的數(shù)字剛好是棧頂元素,那么直接彈出,如果下一個彈出的數(shù)字不在棧頂,則把壓棧序列中還沒有入棧的數(shù)字壓入輔助棧,直到把下一個需要彈出的數(shù)字壓入棧頂為止;如果所有數(shù)字都壓入棧后仍然沒有找到下一個彈出的數(shù)字,那么該序列不可能是一個彈出序列。
代碼如下

    public static boolean isPopOrder(int[] pushArr,int[] popArr)
    {
        if (pushArr==null||popArr==null)
        {
            return false;
        }
        int len=pushArr.length;
        if (len==0||len!=popArr.length)
        {
            return false;
        }
        int indexPush=0;
        int indexPop=0;
        Deque<Integer> stack=new ArrayDeque<>();
        while (indexPop<len)
        {
            while (stack.isEmpty()||stack.peek()!=popArr[indexPop])
            {
                if (indexPush>=len)
                {
                    return false;
                }
                stack.push(pushArr[indexPush]);
                indexPush++;
            }
            stack.pop();
            indexPop++;
        }
        return true;
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 輸入兩個整數(shù)序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設(shè)壓入棧的所有數(shù)字均不相等。...
    鴻雁長飛光不度閱讀 783評論 0 0
  • 棧的壓入、彈出序列 題目描述 輸入兩個整數(shù)序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。...
    echoVic閱讀 557評論 0 1
  • 題目描述 輸入兩個整數(shù)序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設(shè)壓入棧的所有數(shù)字...
    _minimal閱讀 1,274評論 2 0
  • 需求 - 希望回到家還可以寫代碼 - 緊急Bug,需要修復并發(fā)布,回公司加班太麻煩 Git遠程倉庫的選擇 - Gi...
    Sanchain閱讀 708評論 0 0
  • 工作之余養(yǎng)幾株吊蘭,置于陽臺邊,每天迎著陽光生長,便悄然開出了幾朵小花。 綻放的小白花朵和新長的嫩葉,猶如春天一般...
    風清_日麗閱讀 327評論 0 1

友情鏈接更多精彩內(nèi)容