[待]生成視窗最大值陣列

阿里瓜瓜發表於2017-05-09

例子:

給出一個整形陣列,例如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)

相關文章