刷題 滑動視窗的最大值

2021-08-21 08:09:26 字數 841 閱讀 1521

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

如果採用蠻力法,掃瞄每乙個滑動視窗並找出最大值,時間複雜度會比較高。

這裡我們採用乙個雙端佇列來處理這個問題,佇列存放陣列下標,隊首儲存當前視窗最大值的下標。

每當視窗滑動一次,我們需要做兩件事情:

1.剔除掉佇列裡小於新增值的資料

2.檢視當前最大值是否過期

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

from collections import deque

class solution:

def maxinwindows(self, num, size):

# write code here

q = deque()

array =

if len(num) >= size and size > 0:

for i in range(size):

while len(q) > 0

and num[i] > num[q[-1]]:

q.pop()

for i in range(size, len(num)):

while len(q) > 0

and num[i] > num[q[-1]]:

q.pop()

if len(q) > 0

and (i - q[0]) > (size - 1):

q.popleft()

return array

刷題 滑動視窗的最大值

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

刷演算法 滑動視窗的最大值

給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為 針對陣列的滑動視窗有以下6個 仔細想想,對於陣列來說,假如視窗大小為3,則整個過程如下 此時最大值是4 此時最大值是4 此時最大值是6,因為新進入視窗的6...

刷演算法 滑動視窗的最大值

給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為 針對陣列的滑動視窗有以下6個 仔細想想,對於陣列來說,假如視窗大小為3,則整個過程如下 此時最大值是4 此時最大值是4 此時最大值是6,因為新進入視窗的6...