輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如,序列 是某棧的壓棧序列,序列 是該壓棧序列對應的乙個彈出序列,但 就不可能是該壓棧序列的彈出序列。
示例1:
輸入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]示例2:輸出:true
解釋:我們可以按以下順序執行:
push(1), push(2), push(3), push(4), pop() -> 4,
push(5), pop() -> 5, pop() -> 3, pop() -> 2, pop() -> 1
輸入: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,...