【劍指Offer 22】棧的壓入摇庙、彈出序列

題目:輸入兩個整數(shù)序列钱雷,第一個序列表示棧的壓入順序抑堡,請判斷二個序列是否為該棧的彈出順序瀑构。假設(shè)壓入棧的所有數(shù)字均不相等普舆。

解法1:

代碼如下:

package demo;

import java.util.Stack;

public class Test22 {
    /**
     * @param push
     *            入棧序列
     * @param pop
     *            出棧序列
     * @return true:出棧序列是入棧序列的一個彈出順序
     */
    public static boolean isPopOrder(int[] push, int[] pop) {
        // 判斷出棧序列是不是入棧序列的一個彈出順序帐萎,默認(rèn)為false
        boolean isPossible = false;
        if (push != null && pop != null && push.length > 0 && push.length == pop.length) {
            // 輔助棧:存放入棧時的數(shù)據(jù)
            Stack<Integer> stack = new Stack<>();
            // 記錄下一個要處理的入棧元素的位置
            int nextPush = 0;
            // 記錄下一個要處理的出棧元素的位置
            int nextPop = 0;
            // 如果出棧元素沒有處理完撩独,就繼續(xù)進(jìn)行處理
            while (nextPop < pop.length) {
                // 如果棧為空敞曹,或者棧頂元素與當(dāng)前處理的出棧元素不相同,一直進(jìn)行操作
                while (stack.isEmpty() || stack.peek() != pop[nextPop]) {
                    // 如果入棧元素已經(jīng)全部入棧了综膀,就退出內(nèi)層循環(huán)
                    if (nextPush >= push.length) {
                        break;
                    }
                    // 還有入棧元素可以入棧
                    stack.push(push[nextPush]);
                    nextPush++;
                }
                /*
                 * 此次有2種情況: 
                 * 1.在棧頂上找到了一個與出棧元素相等的元素 
                 * 2.在棧頂上沒有找到一個與出棧元素相等的元素澳迫,而且入棧元素已經(jīng)全部入棧了
                 */
                // 2.
                if (stack.peek() != pop[nextPop]) {
                    break;
                }
                // 第1種情況,就將出棧的棧頂元素彈出
                stack.pop();
                // 指向下一個要處理的出棧元素的位置
                nextPop++;
            }
            /*
             * 此處有2種情況: 
             * 1. 外層while循環(huán)在第2種情況下退出剧劝,此時stack必不為空 
             * 2. 所有的出棧元素都被正確匹配橄登,此時stack為空
             */
            if (stack.isEmpty()) {
                isPossible = true;
            }
        }
        return isPossible;
    }

    public static void main(String[] args) {
        int[] push = { 1, 2, 3, 4, 5 };
        int[] pop1 = { 4, 5, 3, 2, 1 };
        int[] pop2 = { 3, 5, 4, 2, 1 };
        int[] pop3 = { 4, 3, 5, 1, 2 };
        int[] pop4 = { 3, 5, 4, 1, 2 };
        System.out.println(isPopOrder(push, pop1));
        System.out.println(isPopOrder(push, pop2));
        System.out.println(isPopOrder(push, pop3));
        System.out.println(isPopOrder(push, pop4));
        int[] push5 = { 1 };
        int[] pop5 = { 1 };
        System.out.println(isPopOrder(push5, pop5));
        System.out.println(isPopOrder(null, null));
    }
}
運行結(jié)果

來源:http://blog.csdn.net/derrantcm/article/details/46691083

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市讥此,隨后出現(xiàn)的幾起案子拢锹,更是在濱河造成了極大的恐慌,老刑警劉巖暂论,帶你破解...
    沈念sama閱讀 212,029評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件面褐,死亡現(xiàn)場離奇詭異,居然都是意外死亡取胎,警方通過查閱死者的電腦和手機展哭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評論 3 385
  • 文/潘曉璐 我一進(jìn)店門湃窍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人匪傍,你說我怎么就攤上這事您市。” “怎么了役衡?”我有些...
    開封第一講書人閱讀 157,570評論 0 348
  • 文/不壞的土叔 我叫張陵茵休,是天一觀的道長。 經(jīng)常有香客問我手蝎,道長榕莺,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,535評論 1 284
  • 正文 為了忘掉前任棵介,我火速辦了婚禮钉鸯,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘邮辽。我一直安慰自己唠雕,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,650評論 6 386
  • 文/花漫 我一把揭開白布吨述。 她就那樣靜靜地躺著岩睁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪揣云。 梳的紋絲不亂的頭發(fā)上捕儒,一...
    開封第一講書人閱讀 49,850評論 1 290
  • 那天,我揣著相機與錄音灵再,去河邊找鬼肋层。 笑死,一個胖子當(dāng)著我的面吹牛翎迁,可吹牛的內(nèi)容都是我干的栋猖。 我是一名探鬼主播,決...
    沈念sama閱讀 39,006評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼汪榔,長吁一口氣:“原來是場噩夢啊……” “哼蒲拉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起痴腌,我...
    開封第一講書人閱讀 37,747評論 0 268
  • 序言:老撾萬榮一對情侶失蹤雌团,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后士聪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锦援,經(jīng)...
    沈念sama閱讀 44,207評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,536評論 2 327
  • 正文 我和宋清朗相戀三年剥悟,在試婚紗的時候發(fā)現(xiàn)自己被綠了灵寺。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片曼库。...
    茶點故事閱讀 38,683評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖略板,靈堂內(nèi)的尸體忽然破棺而出毁枯,到底是詐尸還是另有隱情,我是刑警寧澤叮称,帶...
    沈念sama閱讀 34,342評論 4 330
  • 正文 年R本政府宣布种玛,位于F島的核電站,受9級特大地震影響瓤檐,放射性物質(zhì)發(fā)生泄漏赂韵。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,964評論 3 315
  • 文/蒙蒙 一距帅、第九天 我趴在偏房一處隱蔽的房頂上張望右锨。 院中可真熱鬧,春花似錦碌秸、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至轧抗,卻和暖如春恩敌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背横媚。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評論 1 266
  • 我被黑心中介騙來泰國打工纠炮, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人灯蝴。 一個月前我還...
    沈念sama閱讀 46,401評論 2 360
  • 正文 我出身青樓恢口,卻偏偏與公主長得像,于是被迫代替她去往敵國和親穷躁。 傳聞我的和親對象是個殘疾皇子耕肩,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,566評論 2 349

推薦閱讀更多精彩內(nèi)容