JZ 31 棧的壓入 彈出序列(棧 模擬)

2021-10-21 19:44:51 字數 743 閱讀 5897

模擬入棧出棧操作的排列,如果根據輸入的壓入序列和彈出序列能夠成功模擬對應的操作序列,則說明該彈出序列是有可能的。

演算法流程:

1. 初始化:輔助棧 stk

stkst

k,彈出序列的索引 i

ii2. 遍歷壓入序列:設當前數字為 num

numnu

m:將 n um

numnu

m 入棧;

迴圈出棧:若 stk

stkst

k 棧頂元素與彈出序列的當前元素相等,則執行出棧,並將彈出序列的索引 i

ii 加1

3. 返回值:若最終 stk

stkst

k 為空,則說明該彈出序列是合法的。

注意:用【 stk

stkst

k 棧頂元素與彈出序列的當前元素相等】作為執行出棧操作的條件,是因為題設規定了棧內所有數字均不相等,這種情況下每個元素可出棧的位置是唯一的,如果有重複的數字的話,元素出棧的位置就會有多個。

class

solution

}return stk.

isempty();}}

31 棧的壓入 彈出序列

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

31 棧的壓入 彈出序列

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

JZ21 棧的壓入 彈出序列

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