劍指offer系列21之棧的壓入 彈出序列

2021-09-11 16:30:16 字數 965 閱讀 3666

輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。(注意:這兩個序列的長度是相等的)

借助了乙個輔助棧來模擬入棧和出棧的過程,過程結束後若輔助棧為空則滿足條件。時間複雜度為o(n

2)

o(n^2)

o(n2

),空間複雜度為o(n

)o(n)

o(n)

。python實現

# -*- coding:utf-8 -*-

class

solution

:def

ispoporder

(self, pushv, popv)

:# write code here

stack =

count =

0for e in pushv:

while count <

len(popv)

and stack[-1

]== popv[count]

: count +=

1 stack.pop(

)return

true

iflen

(stack)==0

else

false

# return not len(stack)

c++實現
class solution 

}return stack.

empty()

;}};

class solution 

}return stack.

empty()

;}};

劍指offer 21 棧的壓入 彈出

1.題目描述輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。注意 這兩個序列的長...

21 棧的壓入 彈出序列(劍指offer)

21.棧的壓入 彈出序列 輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。注意 這兩...

《劍指offer》21 棧的壓入 彈出序列

輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。注意 這兩個序列的長度是相等的 思路...