給定 n 個整數,找出平均數最大且長度為 k 的連續子陣列,並輸出該最大平均數。
示例:由於是關於乙個陣列中子陣列的求和問題,所以可以利用滑動視窗方法來解。輸入:[1,12,-5,-6,50,3], k = 4
輸出:12.75
解釋:最大平均數 (12-5-6+50)/4 = 51/4 = 12.75
(1) 首先,將陣列 nums 中的前 k 個元素求和得到 sum ,並認為它是當前的最大值。
(2) 隨後設定乙個 left 指標用來指向子陣列中的第乙個元素。
(3) 遍歷 nums 陣列的後 n - k 個元素,每遍歷一次就減去 nums 中 left 位置上的元素並加上最新進來的元素,計算完後與之前設定的最大值進行比較,直到遍歷完所有元素。即可得到長度為k的連續子陣列的最大值。
整個過程就像是有乙個能夠移動的視窗在這個陣列 nums 上,從左至右一次移動一格。在計算時,每次都是計算當前這個視窗中的所有元素。
class
solution
int maxsum = sum;
int left =0;
//左指標--用來指向視窗中的第乙個元素
//從第k個開始到陣列結尾(滑動視窗)---i就相當於是指向下乙個要進入視窗的元素的指標
for(
int i = k; i < n; i++
)return
1.0* maxsum / k;
}}
643 子陣列最大平均數 I
題目描述 給定 n 個整數,找出平均數最大且長度為 k 的連續子陣列,並輸出該最大平均數。示例 1 輸入 1,12,5,6,50,3 k 4 輸出 12.75 解釋 最大平均數 12 5 6 50 4 51 4 12.75 注意 1 k n 30,000。所給資料範圍 10,000,10,000 方...
LeetCode 643 子陣列最大平均數 I
給定n個整數,找出平均數最大且長度為k的連續子陣列,並輸出該最大平均數。示例 1 輸入 1,12,5,6,50,3 k 4 輸出 12.75 解釋 最大平均數 12 5 6 50 4 51 4 12.75 注意 1 k n 30,000。所給資料範圍 10,000,10,000 思路 先求前k個數的...
子陣列最大平均數
給定 n 個整數,找出平均數最大且長度為 k 的連續子陣列,並輸出該最大平均數。示例 1 輸入 1,12,5,6,50,3 k 4 輸出 12.75 簡單的滑動視窗題目 直接暴力求解會導致時間複雜度過高,大量資料輸入超出最大執行時間 使用滑動視窗優化減少迴圈巢狀 1.初始前k個數的值sum 2.從第...