22 棧的壓入、彈出序列 (棾伲混洗 stack permutation)

棧的壓入贷掖、彈出序列

題目描述:

輸入兩個整數(shù)序列,第一個序列表示棧的壓入順序渴语,請判斷第二個序列是否可能為該棧的彈出順序苹威。假設(shè)壓入棧的所有數(shù)字均不相等。例如序列1,2,3,4,5是某棧的壓入順序驾凶,序列4,5,3,2,1是該壓棧序列對應(yīng)的一個彈出序列牙甫,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。(注意:這兩個序列的長度是相等的)

解題思路:

  1. 如果下一個需要彈出的數(shù)字剛好是棧頂?shù)臄?shù)字狭郑,那么直接彈出腹暖。
  2. 若果下一個需要彈出的數(shù)字不是棧頂?shù)臄?shù)字, 那么我們把待入棧序列中的數(shù)字依次壓入輔助棧中翰萨,直到把這個需要彈出的數(shù)字壓到棧頂為止。
  3. 如果所有的數(shù)字都壓入了棧中糕殉,但是還是沒有找到下一個彈出的數(shù)字亩鬼,那么該序列不是一個可以彈出的序列

代碼:

class Solution{
public:
    bool IsPopOrder(vector<int> pushV, vector<int> popV) {
        // 設(shè)置一個輔助棧,以及一個輔助變量來記錄此時需要得到的棧頂彈出值
        stack<int> stackData;
        int data;
        // 
        if (pushV.empty() || popV.empty()) {
            return false;
        }
        if (pushV.size() != popV.size()) {
            return false;
        }
        stackData.push(pushV[0]);
        int j = 1;
        for (int i = 0; i < popV.size(); ++i) {
            // 取彈出序列最前面的值
            data = popV[i];

            // 如果彈出序列的值等于此時棧頂?shù)闹蛋⒌瑒t彈出棧頂值
            // 并進入下一次的for循環(huán)雳锋,開始下一次的檢視
            if (data == stackData.top()) {
                stackData.pop();
            }

            // 如果棧頂?shù)臄?shù)值與彈出的序列不相等
            // 則將此數(shù)值壓入輔助棧中,并檢視之后的待入棧值
            else {
                // 直到找到入棧序列中可以被彈出的那個值
                while (j < pushV.size() && pushV[j] != data) {
                    stackData.push(pushV[j]);
                    ++j;
                }

                // 退出while循環(huán)之后有兩種可能
                // 1.j已經(jīng)遍歷完了入棧序列的所有值
                if (j >= pushV.size()) {
                    return false;
                }
                // 2.找到了與待彈出元素相等的數(shù)值
                // 將此數(shù)值壓入輔助棧羡洁,接著馬上彈出輔助棧(相當于沒有做任何操作)
                else if (pushV[j] == data) {
                    ++j;
                }
            }
        }
        // 如果順利進行完了上述的過程而且沒有返回false
        // 則說明匹配成果
        return true;
    }
};

2018.10.11

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末玷过,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子筑煮,更是在濱河造成了極大的恐慌辛蚊,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件真仲,死亡現(xiàn)場離奇詭異袋马,居然都是意外死亡,警方通過查閱死者的電腦和手機秸应,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門虑凛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來碑宴,“玉大人,你說我怎么就攤上這事桑谍⊙幽” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵锣披,是天一觀的道長贞间。 經(jīng)常有香客問我,道長盈罐,這世上最難降的妖魔是什么榜跌? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮盅粪,結(jié)果婚禮上钓葫,老公的妹妹穿的比我還像新娘。我一直安慰自己票顾,他們只是感情好础浮,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著奠骄,像睡著了一般豆同。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上含鳞,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天影锈,我揣著相機與錄音,去河邊找鬼蝉绷。 笑死鸭廷,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的熔吗。 我是一名探鬼主播辆床,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼桅狠!你這毒婦竟也來了讼载?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤中跌,失蹤者是張志新(化名)和其女友劉穎咨堤,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體晒他,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡吱型,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蹲诀。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡阿趁,死狀恐怖茎芭,靈堂內(nèi)的尸體忽然破棺而出策添,到底是詐尸還是另有隱情善茎,我是刑警寧澤缭召,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布滋捶,位于F島的核電站撞鹉,受9級特大地震影響疟丙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鸟雏,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一享郊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧孝鹊,春花似錦炊琉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至柳骄,卻和暖如春团赏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背耐薯。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工舔清, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人曲初。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓鸠踪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親复斥。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360

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

  • Java byte code 的學習意義 為啥要學java bytecode械媒,這就跟你問我已經(jīng)會python了為...
    shanggl閱讀 1,670評論 0 3
  • 我們今天繼續(xù)來看看周五留下的習題: 面試題:輸入兩個整數(shù)序列目锭,第一個序列表示棧的壓入順序,請判斷二個序列是否為該棧...
    nanchen2251閱讀 466評論 0 3
  • 本文是我自己在秋招復(fù)習時的讀書筆記纷捞,整理的知識點痢虹,也是為了防止忘記,尊重勞動成果主儡,轉(zhuǎn)載注明出處哦奖唯!如果你也喜歡,那...
    波波波先森閱讀 4,115評論 0 23
  • 人已到中年糜值,新陳代謝變的慢了許多丰捷,老李摸了摸肚子上被脂肪蓋住的腹肌坯墨。 遙想當年,小喬初嫁病往,西北望捣染,射天狼…… “我...
    李帥松閱讀 136評論 0 1
  • 寫文章難不難呢,對于現(xiàn)在的我來說寫篇好的文章是挺難的停巷,但不能因為難就不去寫呀耍攘!我為什么會想著去寫呢,大概是因為這能...
    于小鎮(zhèn)閱讀 228評論 0 1