leetcode 946 驗證棧序列

2021-09-20 10:05:44 字數 627 閱讀 8210

思路:用乙個棧去模擬出入棧的過程

比如,當前pushed=,popped=時,借助乙個額外的棧s,置i=0,j=0(i指向pushed,j指向popped); popped[j]=4,所以先將,1,2,3壓入棧s中,此時i指向了pushed中的4,j指向了popped中的4,它倆相同,所以可以不用入棧,相當於

4入棧以後直接出棧了。此時i,j繼續後移,i指向pushed中的5,j指向了popped中的5。由於他們相同,直接遞增i,j;相當於5入棧之後馬上出棧。

此時會退出第乙個大的while迴圈,開始逐個比較棧頂元素和popped[j]是否相同即可。

注意:特殊情況:第一種,pushed=,popped=時,相當於每個元素都是壓棧後馬上彈出,所以在while中棧s沒有壓入任何元素,返回true即可。

第二種,pushed=,popped=。s中壓入1,2後,i指向3,j指向3。此時遞增i,j。i指向4,j指向2,此時j所指的2與棧頂元素2相同,所以s.pop(),j後移,此時j指向1,又與新的棧頂1相同。繼續s.pop(),j後移。

class solution ,popped=

}while(!s.empty())

return true;

}};

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

LeetCode946 驗證棧序列

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