[tx面試題]
題目描述:
輸入兩個整數序列,其中乙個序列表示棧的push(入)序列,判斷另乙個序列有沒有可能是對應的pop(出)序列。解答
假如輸入的push序列是:1、2、3、4、5,那麼3、2、5、4、1就可能是乙個pop序列,但是5、3、4、1、2就不可能是它的乙個pop序列了。
# 構造乙個棧
class
stack
:def
__init__
(self, maxsize)
: self.top =
0 self.lst =
[none
]* maxsize
self.maxsize = maxsize
defpush
(self, x)
:if self.top == self.maxsize:
raise exception(
"棧滿"
) self.lst[self.top]
= x self.top +=
1def
pop(self)
:if self.top ==0:
raise exception(
"棧空"
) self.top -=
1return self.lst[self.top]
lis1 =[1
,2,3
,4,5
]lis2 =[3
,2,5
,4,1
]def
judge
(lst1, lst2)
: s = stack(10)
j =0for v in lst1:
s.push(v)
cur = s.pop(
)while cur == lst2[j]
: j +=
1if j >4:
break
if s.top ==0:
break
cur = s.pop(
) s.push(cur)
if j !=5:
return
false
return
true
(judge(lis1, lis2)
)# true
棧中常見問題 如何根據入棧序列判斷可能出棧序列
問題二 如何根據入棧序列判斷可能出棧序列 如入棧的子串行是,那麼出棧的順序有可能是麼?當然可以啦,我們這麼想,首先,棧是先進後出,一般先出棧頂的元素。那麼我們依次將輸入序列入棧,並判斷入棧以後的棧頂元素是否等於出棧序列的第乙個元素,那麼就將入棧的元素pop出。最後,看入棧的所有元素是否已經pop出。...
棧問題 根據入棧序列,得出可能的出棧序列
根據入棧序列,得出可能的出棧序列 例如 輸入 a b 輸出 a進a出b進b出 ab a進b進b出a出 ba 輸入 a b c 輸出 a進a出b進b出c進c出 abc a進a出b進c進c出b出 acb a進b進c進c出b出a出 cba a進b進b出c進c出a出 bca a進b進b出a出c進c出 bac...
「根據入棧順序判斷可能的出棧順序」python語言
題目描述 輸入兩個整數序列,其中乙個序列表示棧的push 入 順序,判斷另乙個序列有沒有可能是對應的pop 出 順序。class stack 實現棧的功能 def init self self.items 判斷棧是否為空 def empty self return self.items none 返...