LeetCode——643. 子数组最大平均数 I[Maximum Average Subarray I]——分析及代码[Java]
一、题目
给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数。
示例:
输入:[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)
链接:https://leetcode-cn.com/problems/maximum-average-subarray-i
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
二、分析及代码
1. 滑动窗口
(1)思路
设计一个长度为 k 的滑动窗口在数组中移动,统计窗口中数据和最大值,计算得到最大平均数。
(2)代码
class Solution {
public double findMaxAverage(int[] nums, int k) {
int sum = 0;
for (int i = 0; i < k; i++)
sum += nums[i];
int ans = sum;
for (int i = k; i < nums.length; i++) {
sum = sum - nums[i - k] + nums[i];
ans = Math.max(ans, sum);
}
return (double)ans / k;
}
}
(3)结果
执行用时 :2 ms,在所有 Java 提交中击败了 100.00% 的用户;
内存消耗 :42.6 MB,在所有 Java 提交中击败了 59.59% 的用户。
三、其他
暂无。