劍指offer64 滑動視窗的最大值

2021-09-11 08:29:14 字數 748 閱讀 8796

給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為; 針對陣列的滑動視窗有以下6個: , , , , , 。

不能每次選取範圍再比較,這樣時間複雜度太高。可以建立乙個佇列,佇列首部是最大值索引,每次要先去掉小於當前數的所有索引,再去掉滑動視窗外的索引:

# -*- coding:utf-8 -*-

class

solution

:def

maxinwindows

(self, num, size)

:# write code here

res, queue =

,[]# 結果,索引佇列

if size ==0:

return res

for i in

range

(len

(num)):

begin = i-size+

1# 開始的位置

while queue and num[queue[-1

]]< num[i]

:# 去掉小於i處數的所有索引

queue.pop(-1

)while queue and begin > queue[0]

:# 去掉過了的最大數索引

queue.pop(0)

if begin >=0:

0]])

return res

劍指offer 64 滑動視窗的最大值

給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為 針對陣列的滑動視窗有以下6個 滑動視窗應當是佇列,但為了得到滑動視窗的最大值,佇列序可以從兩端刪除元素,因此使用雙端佇列。原則 對新來的元素k,將其與雙端...

劍指offer64 滑動視窗的最大值

給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為 針對陣列的滑動視窗有以下6個 視窗大於陣列長度的時候,返回空 示例1輸入 2,3,4,2,6,2,5,1 3 返回值 4,4,6,6,6,5 思路1 暴力...

劍指offer(64)滑動視窗中的最大值

給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為 針對陣列的滑動視窗有以下6個 這道題我們需要轉換下參考物件,像物理學中一樣。題目描述的是滑動視窗在陣列上移動。如果我們以滑動視窗為物件,那麼就是陣列在滑動...