劍指Offer 棧的壓入 彈出序列

2021-10-05 05:36:15 字數 827 閱讀 5445

輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如,序列 是某棧的壓棧序列,序列 是該壓棧序列對應的乙個彈出序列,但 就不可能是該壓棧序列的彈出序列。

示例 1:

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

輸出:true

解釋:我們可以按以下順序執行:

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 之前彈出。

模擬,看到有描述特別好的,直接拿過來

按照 popped 中的順序模擬一下出棧操作,如果符合則返回 true,否則返回 false。

使用乙個棧 st 來模擬該操作。將 pushed 陣列中的每個數依次入棧,同時判斷這個數是不是 popped 陣列中下乙個要 pop 的值,如果是就把它 pop 出來。最後檢查棧是否為空。

如果棧為空,返回 true,否則返回 false。

class solution 

stackst;

int j = 0;

for(int i = 0;i < pushed.size();i++)

}return st.empty();

}};

劍指offer 棧的壓入 彈出序列

輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。分析 用乙個輔助棧模擬壓入彈出操作,...

劍指offer 棧的壓入 彈出序列

題目 輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。思路 解決這個問題很直觀地想法...

劍指offer 棧的壓入 彈出序列

題目 輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。注意 這兩個序列的長度是相等的...