写点什么

【LeetCode】子数组的最大平均数

用户头像
HQ数字卡
关注
发布于: 2021 年 02 月 04 日

题目

给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数。


代码

/** * leetcode 643 子数组的最大平均数 * */public class DayCode {    public static void main(String[] args) {        int[] nums = new int[]{1,12,-5,-6,50,3};        int k = 4;        double ans = new DayCode().findMaxAverage(nums, k);        System.out.println("ans is " + ans);
}
public double findMaxAverage(int[] nums, int k) { int tempSum = 0, maxSum = 0; for (int i = 0; i < k; i++) { tempSum += nums[i]; } maxSum = tempSum; for (int j = k; j < nums.length; j++) { tempSum -= nums[j-k]; tempSum += nums[j]; maxSum = Math.max(tempSum, maxSum); } return (double) maxSum / k; }}
复制代码


总结

  • 这个题目描述简单易懂,解决也比较容易。上述算法的时间复杂度是 O(n),空间复杂度是 O(1)。

  • 反思一下这个题目,平均数是滑动窗口类问题中比较简单的,因为只需要判断动态和和窗口中的数字个数。

  • 滑动窗口类问题的思想其实并不复杂,但是在代码实现的时候,会有一些边界和细节的问题需要考虑。

  • 滑动窗口的思想,还广泛应用于生产中,比如:API 接口限流。


发布于: 2021 年 02 月 04 日阅读数: 16
用户头像

HQ数字卡

关注

还未添加个人签名 2019.09.29 加入

LeetCode,略懂后端的RD

评论

发布
暂无评论
【LeetCode】子数组的最大平均数