LeetCode946 驗證棧序列

2021-09-23 15:35:46 字數 1218 閱讀 4054

給定pushedpopped兩個序列,只有當它們可能是在最初空棧上進行的推入 push 和彈出 pop 操作序列的結果時,返回true;否則,返回false

示例 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] < 1000pushedpopped的排列。

解析:判斷乙個序列是否是出棧序列。改題目也是用棧完成,用棧儲存pushed中的資料,當遇到popped中最前邊未匹配的資料時,出棧,否則繼續壓棧。如果pushed全部壓棧,棧頂元素和popped最前未匹配資料不相等,則返回false。最後如果棧非空,則返回false。

**:

bool validatestacksequences(vector& pushed, vector& popped) 

while (!pushstack.empty() && popped[i] == pushstack.top())

if (!pushstack.empty() && j>=pushed.size() && popped[i] != pushstack.top())

return false;

} return pushstack.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,它倆相同,所以可以不用入棧,相當...

LeetCode 946 驗證棧序列

給定pushed和popped兩個序列,只有當它們可能是在最初空棧上進行的推入 push 和彈出 pop 操作序列的結果時,返回true 否則,返回false。示例 1 輸入 pushed 1,2,3,4,5 popped 4,5,3,2,1 輸出 true解釋 我們可以按以下順序執行 push 1...