用兩個棧來實現乙個佇列,完成佇列的push和pop操作。 佇列中的元素為int型別。入隊時資料存到stackin,出隊時資料從stackout彈出。
執行入隊操作時,資料源源不斷的壓入棧stackin。
執行出隊操作時,stackout為空,則把stackin裡的資料全部彈出壓倒stackout中,當stackout棧非空時,不斷彈出stackout棧中的資料順序即為佇列的pop順序;
# -*- coding:utf-8 -*-
class
solution
:def
__init__
(self)
: self.stackin=
self.stackout=
defpush
(self, node)
:# write code here
defpop
(self)
:# return xx
if self.stackout==
:while self.stackin:))
return self.stackout.pop(
)if __name__ ==
'__main__'
: solution = solution(
) solution.push(1)
solution.push(2)
solution.push(3)
solution.pop(
) solution.pop(
) solution.push(4)
solution.pop(
) solution.push(5)
solution.pop(
) solution.pop(
)
「student. a am i」翻轉為「i am a student.」
#思路1
'''棧,後進先出'''
# -*- coding:utf-8 -*-
class
solution
:def
reversesentence
(self, s)
:# write code here
alist=s.split(
' ')
stackin=
for i in alist:
result=
while stackin:))
return
' '.join(
[x for x in result]
)
#思路2
'''使用字串分割連線'''
class
solution
:def
reversesentence
(self, s)
: alist=s.split(
' ')
return
' '.join(alist[::
-1])
# 法一:雙端佇列
'''思路:
迴圈遍歷陣列,
1.把列表對應的索引入隊,隊尾元素小於當前元素則刪除隊尾元素,直到隊尾元素大於當前元素,然後將當前元素插入隊尾。
2.如果i>=k-1,說明視窗已經形成(i-k+1,i),插入隊頭元素到res。如果佇列頭部元素小於下乙個視窗[i-k+2,i+1]左邊界,刪除佇列頭部。
'''class
solution
:def
maxinwindows
(self, num, size)
:# write code here
ifnot num or size>
len(num)
or size ==0:
return
if size ==1:
return num
from collections import deque
res =
deq = deque([0
])for i in
range(1
,len
(num)):
if i - deq[0]
>= size:
#控制滑塊大小為size
deq.popleft(
)if num[i]
> num[deq[0]
]:deq = deque(
[i])
else
:while num[i]
> num[deq[-1
]]: deq.pop(
)if i >= size-1:
# i-k+1>0是滑動視窗的左邊界,視窗邊界:(i-k+1,i)0]
])return res
s1=solution(
)# re=s1.maxslidingwindow([12,5,66,3,2,8,9,4],3)
re=s1.maxslidingwindow([4
,6,3
,5,2
,8,15
,52],
4)print
(re)
# 法二:max()函式求最大值
# 用切片控制滑塊中的數值,max()函式求最大值,儲存到列表中
defmaxinwindows
(self, num, size)
: res =
iflen
(num)
>
0and size >0:
endp = size
while endp <=
len(num)
:max
(num[endp-size:endp]))
endp +=
1return res
劍指offer題目
在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非減排序的陣列的乙個旋轉,輸出旋轉陣...
劍指offer 棧 佇列類題目
題目 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。解析 題目中有兩個棧stack1和stack2,用來模擬佇列的操作,我是想把第乙個stack1作為資料儲存,第二個stack2作為中轉。佇列的特點是先進先出,1 入隊操作,因為用stack1作為儲存,首先得判斷上...
資料結構(劍指offer)(堆疊)(python)
定義棧的資料結構,請在該型別中實現乙個能夠得到棧中所含最小元素的min函式 時間複雜度應為o 1 思路 用空間換時間,用乙個輔助棧記錄當前棧中的最小值。輔助棧元素個數和資料棧保持一樣的數目。例如一次壓入資料棧數字串行為 3,2,4,1,5 那麼一次壓入輔助棧的為 3,2,2,1,1 當每次壓入資料棧...