題目
給定一個長度為 n 的數組 num 和滑動窗口的大小 size ,找出所有滑動窗口里數值的最大值。
例如,如果輸入數組{2,3,4,2,6,2,5,1}及滑動窗口的大小3,那么一共存在6個滑動窗口,他們的最大值分別為{4,4,6,6,6,5}; 針對數組{2,3,4,2,6,2,5,1}的滑動窗口有以下6個: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, {2,3,4,[2,6,2],5,1}, {2,3,4,2,[6,2,5],1}, {2,3,4,2,6,[2,5,1]}。
窗口大于數組長度或窗口長度為0的時候,返回空。
數據范圍: 1≤n≤10000,0≤size≤10000,數組中每個元素的值滿足 ∣val∣≤10000
要求:空間復雜度 O(n),時間復雜度)O(n)
示例1
輸入:[2,3,4,2,6,2,5,1],3
返回值:[4,4,6,6,6,5]
解題思路
1.如果滑動窗口的大小為0,則直接返回空列表
2.不為0,則依次以滑動窗口的大小作為每次遍歷的長度,每次滑動向后移動一位,依次遍歷查找每個窗口中的最大值
題解
#
# 代碼中的類名、方法名、參數名已經指定,請勿修改,直接返回方法規定的值即可
#
#
# @param num int整型一維數組
# @param size int整型
# @return int整型一維數組
#
class Solution:def maxInWindows(self , num: List[int], size: int) -> List[int]:# 1.如果滑動窗口的大小為0,則直接返回空列表if size==0: return[]# 2.不為0,則依次以滑動窗口的大小作為每次遍歷的長度,每次滑動向后移動一位,依次遍歷查找每個窗口中的最大值max_list =[]n=0l=len(num)while n+size<=l:max=num[n]for i in range(n,n+size):print(num[i])if max<num[i]:max=num[i]max_list.append(max)n+=1return max_list