訓練營第三天 佇列和堆排序

2021-09-10 07:56:17 字數 775 閱讀 4452

一、基礎知識

**佇列:**佇列是一種特殊的線性表,特殊之處在於它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。

**堆排序:**是指利用堆這種資料結構所設計的一種排序演算法。堆是乙個近似完全二叉樹的結構,並同時滿足堆積的性質:即子結點的鍵值或索引總是小於(或者大於)它的父節點。

二、239滑動視窗最大值

class solution(object):

def maxslidingwindow(self, nums, k):

""":type nums: list[int]

:type k: int

:rtype: list[int]

"""if not nums:return

res,window = ,

for i,x in enumerate(nums):

if i >= k and window[0] <= i - k:

window.pop(0)

while window and nums[window[-1]] <= x:

window.pop()

if i >= k - 1:

return res

執行結果:

三、心得體會

暑期訓練第二週第三天

今天的訓練還是複習上週做過的習題,因此我就直接寫感想了。感想剛開始的時候,其實我並不是很理解問什麼要花這麼長的時間來複習前面做過去的題目,有這時間做兩道新題多好呢。但後來我又仔細的想了想,如果沒有練習的話,這些空餘的時間我可能會去學一下新東西,做做題,但絕對不可能去複習之前的題目。那麼對於老師來說 ...

暑假訓練第二週第三天

c codeforces 1260e 題意 現在有n個人打拳,序號小的打不過序號大的,並且如果你花ai元賄賂第i個人,你就能贏,且你可以分配每次比賽的組隊以及賄賂,問你最少需要多少錢能贏到最後。思路 a個人進入到了前a強,那麼按能力值從小到大,就必須第1個人前面有至少 n a 1個人 第2 個人前面...

2019雛鷹訓練營第三次作業

因為較多,新建乙個隨筆 在vmware15安裝ubuntu 16.04 在ubuntu編寫helloworld 一開始看到題目sketch,不是做ui設計用的軟體嗎,還要mac os。後來再往下看count min sketch。count min sketch 是乙個概率資料結構,用作資料流中事件...