判斷一個(gè)序列是否為壓棧序列對(duì)應(yīng)的一個(gè)彈出序列

輸入兩個(gè)整數(shù)序列,第一個(gè)序列表示棧的壓入順序,請(qǐng)判斷第二個(gè)序列是否為該棧的彈出順序。假設(shè)壓入棧的所有數(shù)字均不相等。例如,序列 {1,2,3,4,5} 是某棧的壓棧序列,序列 {4,5,3,2,1} 是該壓棧序列對(duì)應(yīng)的一個(gè)彈出序列,但 {4,3,5,1,2} 就不可能是該壓棧序列的彈出序列。

示例 1:? 輸入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]

????????????????輸出:true

????????????????解釋:我們可以按以下順序執(zhí)行:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?push(1), push(2), push(3), push(4), pop() -> 4,? push(5), pop() -> 5, pop() -> 3, pop() -> 2, pop() -> 1

示例 2:? 輸入:pushed = [1,2,3,4,5], popped = [4,3,5,1,2]

????????????????輸出:false

????????????????解釋:1 不能在 2 之前彈出。

解題思路:判斷合不合法,用個(gè)棧試一試: 把壓棧的元素按順序壓入,當(dāng)棧頂元素和出棧的第一個(gè)元素相同,則將該元素彈出,出棧列表指針后移并繼續(xù)判斷。最后判斷出棧列表指針是否指向出棧列表的末尾即可。

?public?boolean?validateStackSequences(int[]?pushed,?int[]?popped)?{

????????Deque<Integer>?deque?=?new?ArrayDeque<>();? //初始化一個(gè)棧

????????int?tan?=?0; //出棧列表指針


????????for(int?node?:?pushed)?{

????????????deque.push(node); // 把壓棧的元素按順序壓入

????????????while(?!deque.isEmpty()?&&?deque.peek()?==?popped[tan])?{ // 當(dāng)棧頂元素和出棧的第一個(gè)元素相同

????????????????deque.pop(); // 則將該元素彈出

????????????????tan++; // 出棧列表指針后移

????????????}

????????}


????????return?tan?==?popped.length; // 判斷出棧列表指針是否指向出棧列表的末尾

????}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 輸入兩個(gè)整數(shù)序列,第一個(gè)序列表示棧的壓入順序,請(qǐng)判斷第二個(gè)序列是否為該棧的彈出順序。假設(shè)壓入棧的所有數(shù)字均不相等。...
    朱小小小虓閱讀 236評(píng)論 0 1
  • 問題描述 輸入兩個(gè)整數(shù)序列,第一個(gè)序列表示棧的壓入順序,請(qǐng)判斷第二個(gè)序列是否為該棧的彈出順序。假設(shè)壓入棧的所有數(shù)字...
    SuBHFeng閱讀 137評(píng)論 0 0
  • 棧的壓入、彈出序列 題目描述 輸入兩個(gè)整數(shù)序列,第一個(gè)序列表示棧的壓入順序,請(qǐng)判斷第二個(gè)序列是否為該棧的彈出順序。...
    阿星啊阿星閱讀 212評(píng)論 0 0
  • 題目描述: 輸入兩個(gè)整數(shù)序列,第一個(gè)序列表示棧的壓入順序,請(qǐng)判斷第二個(gè)序列是否為該棧的彈出順序。假設(shè)壓入棧的所有數(shù)...
    小劉一定要努力閱讀 180評(píng)論 0 0
  • 題目描述: 輸入兩個(gè)整數(shù)序列,第一個(gè)序列表示棧的壓入順序,請(qǐng)判斷第二個(gè)序列是否為該棧的彈出順序。假設(shè)壓入棧的所有數(shù)...
    小劉一定要努力閱讀 260評(píng)論 0 0

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