給定pushed
和popped
兩個序列,只有當它們可能是在最初空棧上進行的推入 push 和彈出 pop 操作序列的結果時,返回true
;否則,返回false
。
示例 1:
輸入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]輸出:true解釋:我們可以按以下順序執行:示例 2: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 <= 1000
0 <= pushed[i], popped[i] < 1000
pushed
是popped
的排列。
此題用乙個空棧s模擬一下。遍歷陣列pushed,將每個遍歷到的元素push進棧s,在push之後檢查如果棧不為空並且棧頂元素等於popped_id指標指向的popped陣列的元素,那麼將s的棧頂彈出,然後將popped_id++。迴圈判斷直到棧s為空或者棧頂元素不等於popped_id指標指向的元素時退出while迴圈。如此進行,當陣列pushed遍歷結束後,如果棧s為空,那麼返回true,否則返回false。
class solution
}return s.empty();
}};
Leetcode 946 驗證棧序列
給定pushed和popped兩個序列,只有當它們可能是在最初空棧上進行的推入 push 和彈出 pop 操作序列的結果時,返回true 否則,返回false。示例 1 輸入 pushed 1,2,3,4,5 popped 4,5,3,2,1 輸出 true解釋 我們可以按以下順序執行 push 1...
leetcode 946 驗證棧序列
思路 用乙個棧去模擬出入棧的過程 比如,當前pushed popped 時,借助乙個額外的棧s,置i 0,j 0 i指向pushed,j指向popped popped j 4,所以先將,1,2,3壓入棧s中,此時i指向了pushed中的4,j指向了popped中的4,它倆相同,所以可以不用入棧,相當...
LeetCode946 驗證棧序列
給定pushed和popped兩個序列,只有當它們可能是在最初空棧上進行的推入 push 和彈出 pop 操作序列的結果時,返回true 否則,返回false。示例 1 輸入 pushed 1,2,3,4,5 popped 4,5,3,2,1 輸出 true解釋 我們可以按以下順序執行 push 1...