643 子陣列最大平均數 I(滑動視窗)

2021-10-19 05:17:24 字數 778 閱讀 7946

給定 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.從第...