leetcode 643. Maximum Average Subarray I 子陣列最大平均數 I
阿新 • • 發佈:2022-05-17
一、題目大意
https://leetcode.cn/problems/maximum-average-subarray-i/
給你一個由 n 個元素組成的整數陣列 nums 和一個整數 k 。
請你找出平均數最大且 長度為 k 的連續子陣列,並輸出該最大平均數。
任何誤差小於10^(-5)的答案都將被視為正確答案。
示例 1:
輸入:nums = [1,12,-5,-6,50,3], k = 4
輸出:12.75
解釋:最大平均數 (12-5-6+50)/4 = 51/4 = 12.75
示例 2:
輸入:nums = [5], k = 1
輸出:5.00000
提示:
- n == nums.length
- 1 <= k <= n <= 105
- -104 <= nums[i] <= 104
二、解題思路
滑動視窗的思路解決,視窗長度固定一直向右滑動即可
三、解題方法
3.1 Java實現
public class Solution { public double findMaxAverage(int[] nums, int k) { // 初始化視窗 double total = 0; for (int i = 0; i < k; i++) { total += nums[i]; } double maxAvg = total / k; // 向右移 for (int right = k; right < nums.length; right++) { total = total + nums[right] - nums[right - k]; double tmpAvg = total / k; if (tmpAvg >= maxAvg) { maxAvg = tmpAvg; } } return maxAvg; } }
四、總結小記
- 2022/5/17 瞭解了滑動視窗的思想,解決這道題就很簡單了