解題思路:新建乙個棧s來模擬這個壓入彈出的操作,依次壓入pushed序列中的每乙個元素,然後迴圈判斷當前棧頂是否和彈出序列中待彈出元素相等,相等則彈出棧頂,指向popped元素的指標指向下乙個待彈出元素,最後判斷棧s是否為空,為空則返回true,反之返回false
class
solution
:def
validatestacksequences
(self, pushed: list[
int]
, popped: list[
int])-
>
bool
: s, i =
,0for x in pushed:
while
(len
(s)and s[-1
]== popped[i]):
i +=
1 s.pop(
)return
not s
LeetCode 面試題31 棧的壓入 彈出序列
輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如,序列 是某棧的壓棧序列,序列 是該壓棧序列對應的乙個彈出序列,但 就不可能是該壓棧序列的彈出序列。示例 1 輸入 pushed 1,2,3,4,5 popped 4,5,3,2,1...
棧 面試題31 棧的壓入 彈出序列
我們使用乙個棧stack來模擬該操作。按照 popped 中的順序模擬一下出棧操作,如果符合則返回 true,否則返回 false。這裡用到的貪心法則是如果棧stack的棧頂元素stack.peek popped 序列中下乙個要 pop 的值,則應立刻將該值 pop 出來。最後檢查棧是否為空。cla...
LeetCode面試題 03 05 棧排序
棧排序。編寫程式,對棧進行排序使最小元素位於棧頂。最多只能使用乙個其他的臨時棧存放資料,但不得將元素複製到別的資料結構 如陣列 中。該棧支援如下操作 push pop peek 和 isempty。當棧為空時,peek 返回 1。class sortedstack public void push ...