946 驗證棧序列

2021-09-29 11:40:09 字數 808 閱讀 8405

給定 pushed 和 popped 兩個序列,每個序列中的 值都不重複,只有當它們可能是在最初空棧上進行的推入 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

題目給出兩個陣列,乙個輸入序列,乙個輸出序列,驗證該輸出序列是否是該輸入陣列的乙個序列。如果不能利用輸入陣列模擬棧的先進後出的特點的話,需要借助額外空間棧,將輸入陣列逐一放入棧,並判斷入棧元素是否與輸出序列元素相同,如果相同則出棧,輸出序列向後移動,否則繼續入棧。判斷是否是其序列的條件是輸出序列的移動指標等於其長度,說明全部匹配。

時間複雜度最大為o(n*n),額外空間複雜度為o(n)

946 驗證棧序列

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

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