21輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。(注意:這兩個序列的長度是相等的)
# -*- coding:utf-8 -*-
class solution:
def ispoporder(self, pushv, popv):
# stack中存入pushv中取出的資料
stack=
while popv:
# 如果第乙個元素相等,直接都彈出,根本不用壓入stack
if pushv and popv[0]==pushv[0]:
popv.pop(0)
pushv.pop(0)
#如果stack的最後乙個元素與popv中第乙個元素相等,將兩個元素都彈出
elif stack and stack[-1]==popv[0]:
stack.pop()
popv.pop(0)
# 如果pushv中有資料,壓入stack
elif pushv:
# 上面情況都不滿足,直接返回false。
else:
return false
return true
22從上往下列印出二叉樹的每個節點,同層節點從左至右列印。
# -*- coding:utf-8 -*-
# class treenode:
# def __init__(self, x):
# self.val = x
# self.left = none
# self.right = none
class solution:
# 返回從上到下每個節點值列表,例:[1,2,3]
def printfromtoptobottom(self, root):
# write code here
l=if not root:
return
q=[root]
while len(q):
t=q.pop(0)
if t.left:
if t.right:
return l
劍指offer 棧相關
回歸一下基本概念 python 實現棧 例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。注意 這兩個序列的長度是相等的 思路 借用乙個輔助的棧,遍歷壓棧順序,先將第乙個放入棧中,這裡是1,然後判斷棧...
劍指Offer(一) 棧
目錄 1 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。2 棧的壓入 彈出序列 思路 3 包含min函式的棧 思路 c 解答 python解答 4 二叉搜尋樹的後序遍歷序列 5 按之字形順序列印二叉樹 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。cod...
(四)劍指offer 棧與佇列篇
2.用兩個棧實現佇列 3.包含min函式的棧 4.棧的壓入 彈出序列 題目給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為 針對陣列的滑動視窗有以下6個 答案思路 用佇列來存放滑動視窗裡邊的元素的下標,對...