棧的壓入、彈出序列
輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否爲該棧的彈出順序。假設壓入棧的所有數字均不相等。
解題思路
1,用go語言slice建一個輔助棧,來順序添加壓入序列
2,每次添加一個元素,去跟彈出序列比較,若不同,繼續添加。若相同,則彈出,繼續拿新建棧的棧頂元素去跟彈出序列去比較,循環即可。
3,最後,若輔助棧中沒有元素,則返回真,反之。
func validateStackSequences(pushed []int, popped []int) bool { //建一個輔助棧 stack := make([]int,0) //將push順序壓入輔助棧中,如果棧頂元素==pop序列中下一個出現的值,則彈出 i := 0 for _,value := range pushed{ stack = append(stack,value) for len(stack) != 0 && stack[len(stack)-1] == popped[i]{ stack = stack[:len(stack)-1] i++ } } //總結判斷 if len(stack) == 0{ return true }else{ return false } }