《LeetCode筆記52》 棧的壓入 彈出序列

2021-10-05 16:17:36 字數 1435 閱讀 8031

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

示例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 <= 10000 <= pushed[i], popped[i] < 1000pushed 是 popped 的排列。
根據根據壓入和彈出序列去還原當時的入棧、出棧操作,如果出現矛盾,則不匹配。

建立乙個空棧s;

遍歷彈出佇列,如果當前彈出值,不在棧s中,預設其連續執行入棧出棧操作,同時定位該元素在壓入序列中的位置,將其之前還未入棧的元素全部加入棧s;

如果當前彈出值存在於棧s,如果其位於棧頂,則符合條件,如果其不位於棧頂則產生矛盾。

class solution:

def validatestacksequences(self, pushed: list[int], popped: list[int]) -> bool:

l = len(popped)

if l==0:

return true

stack =

head = 0

for i in range(l):

current_val = popped[i]

if current_val in stack:

if stack.pop() != current_val:

return false

else:

index = pushed.index(current_val)

stack += pushed[head:index]

head = index+1

return true

Leetcode 棧的壓入 彈出序列

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

5 2 棧的實現

基本功能 外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳 img g3lrzzmk 1610469089793 d3c0144a7fd44573b9ff652e616cf7c6 物件導向迭代 外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳 img hnhxu9nf 16104...

棧的壓入壓出

何海濤 劍指offer 名企面試官精講典型程式設計題 九度oj 題目描述 輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,...