輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如,序列 {1,2,3,4,5} 是某棧的壓棧序列,序列 {4,5,3,2,1} 是該壓棧序列對應的一個彈出序列,但 {4,3,5,1,2} 就不可能是該壓棧序列的彈出序列。 示例 1 ...
輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如,序列 {1,2,3,4,5} 是某棧的壓棧序列,序列 {4,5,3,2,1} 是該壓棧序列對應的一個彈出序列,但 {4,3,5,1,2} 就不可能是該壓棧序列的彈出序列。
示例 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 <= 1000
0 <= pushed[i], popped[i] < 1000
pushed 是 popped 的排列。
來源:力扣(LeetCode)
鏈接:https://leetcode.cn/problems/zhan-de-ya-ru-dan-chu-xu-lie-lcof
著作權歸領扣網路所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。
點擊查看代碼
func validateStackSequences(pushed []int, popped []int) bool {
stack :=[]int{}
i := 0
for _, x := range(pushed) {
stack = append(stack, x)
for len(stack) > 0 && stack[len(stack)-1] == popped[i]{
stack = stack[:len(stack)-1]
i++
}
}
return len(stack) == 0
}
本文來自博客園,作者:slowlydance2me,轉載請註明原文鏈接:https://www.cnblogs.com/slowlydance2me/p/17318549.html