給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為; 針對陣列的滑動視窗有以下6個: , , , , , 。
# 方法一
class
solution
:def
maxinwindows
(self, num, size)
:# write code here
ifnot num or
len(num)
< size or size==0:
return
numwindow =
len(num)
- size +
1 res =
for i in
range
(numwindow)
:max
(num[i:i+size]))
return res
# 方法二
class
solution
:def
maxinwindows
(self, nums, k)
:"""
:type nums: list[int]
:type k: int
:rtype: list[int]
"""#嚴謹判斷輸入的數字是否合法
ifnot nums or k<=
0or k>
len(nums)
:return
window, res =
,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:
0]])
return res
JZ 064 滑動視窗的最大值
滑動視窗的最大值 題目描述給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為 針對陣列的滑動視窗有以下6個 題目鏈結 滑動視窗的最大值 import j a.util.arraylist import j ...
滑動視窗的最大值 佇列的最大值
請定義乙個佇列並實現函式max得到佇列裡的最大值,要求函式max push back和 pop front的時間複雜度都是o 1 在佇列中維護乙個儲存最大值的佇列,當pop和push操作的同時也對最大值佇列進行維護。當彈出的時佇列中的最大值時,也彈出最大值佇列的頭,當壓入新值時,對最大值佇列從後向前...
棧與佇列 單調佇列解決滑動視窗最大值
設計單調佇列的時候,pop,和push操作要保持如下規則 pop value 如果視窗移除的元素value等於單調佇列的出口元素,那麼佇列彈出元素,否則不用任何操作 push value 如果push的元素value大於入口元素的數值,那麼就將佇列入口的元素彈出,直到push元素的數值小於等於佇列入...