輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列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就不可能是該壓棧序列的彈出序列。注意 這兩個序列的長度是相等的 思路...