LeetCode 面試題31 棧的壓入 彈出序列

2021-10-05 01:20:06 字數 743 閱讀 2979

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

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

0 <= pushed.length == popped.length <= 1000

0 <= pushed[i], popped[i] < 1000

pushed 是 popped 的排列。

注意:本題與主站 946 題相同:

class solution 

else if (in_idx < pushed.size())

else

return false;

}return true;

}};

leetcode 面試題31棧的壓入和彈出序列

解題思路 新建乙個棧s來模擬這個壓入彈出的操作,依次壓入pushed序列中的每乙個元素,然後迴圈判斷當前棧頂是否和彈出序列中待彈出元素相等,相等則彈出棧頂,指向popped元素的指標指向下乙個待彈出元素,最後判斷棧s是否為空,為空則返回true,反之返回false class solution de...

棧 面試題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 ...