例子:
給出一個整形陣列,例如arr = {5,4,3,5,6,7,6},視窗大小為w=3,視窗每次向右移動一位,輸出每個視窗中最大值組成的陣列。
[5,4,3,]5,6,7,6 視窗最大值為5
5,[4,3,5,]6,7,6 視窗最大值為5
5,4,[3,5,6,]7,6 視窗最大值為6
5,4,3,[5,6,7,]6 視窗最大值為7
5,4,3,5,[6,7,6] 視窗最大值為7
則輸出的陣列為{5,5,6,7,7};如果陣列長度為n, 視窗大小為w, 則一共產生n-w+1個視窗的最大值
要求:
實現一個函式。
Input:整型陣列arr, 視窗大小為w
Output: 一個長度為n-w+1的陣列res, resp[i]表示每一種視窗下的最大值
普通的演算法時間複雜度為O(n*w), 嘗試時間複雜度O(n)