思路:用乙個棧去模擬出入棧的過程
比如,當前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...