首页 > 其他分享 >LeetCode643. 子数组最大平均数I

LeetCode643. 子数组最大平均数I

时间:2023-12-04 14:58:27浏览次数:35  
标签:end 平均数 sum double start LeetCode643 数组 max avg

题目描述

思路:滑动窗口模板

  • 定义需要维护的变量
// 1. 定义需要维护的变量
double sum = 0;
double max_avg = Integer.MIN_VALUE;
  • 窗口固定大小为k,所以用if
if (end - start + 1 == k) {
	sum -= nums[start];
	start += 1;
}

方法一:

class Solution {
    public double findMaxAverage(int[] nums, int k) {
        // 1. 定义需要维护的变量
        double sum = 0;
        double max_avg = Integer.MIN_VALUE;

        // 2. 定义窗口边界
        int start = 0;
        for (int end = 0; end < nums.length; end ++ ) {
            // 3. 更新需要维护的变量
            sum += nums[end];
            if (end - start + 1 == k) {
                max_avg = Math.max(max_avg, sum / k);
            }
            // 4. 根据题意可知,窗口长度固定为k,所以用if
            // 收缩窗口 其实可以和上面代码合并一起,在这里主要是为了体现框架
            if (end - start + 1 == k) {
                sum -= nums[start];
                start += 1;
            }
        }
        // 5. 返回结果
        return max_avg;
    }
}

在Java中,Double.MIN_VALUE代表正的最小值,而不是负值。具体来说,Double.MIN_VALUE是一个正数,它是最接近正零的 double 类型数值。它并不表示最小的负数值。
避坑:double max_avg = Double.MIN_VALUE;

标签:end,平均数,sum,double,start,LeetCode643,数组,max,avg
From: https://www.cnblogs.com/keyongkang/p/17874903.html

相关文章

  • yocto-queue 库如何实现替代数组【玩转源码】
    前言前面提到了可以使用yocto-queue库代替Array操作数组,本篇则深入源码了解一下yocto-queue是如何实现替代数组的。yocto-queue源码分析源码中的代码量相对较少,读起来会比较轻松,看似可以琢磨的点少,其实不然。代码中包含知识点主要包括类的属性、链表与数组的对比、队列、自定义迭代......
  • ABC 331 F - Palindrome Query(字符串哈希,树状数组)
    字符串哈希[OI-Wiki](字符串哈希-OIWiki(oi-wiki.org))分为两种哈希方式:以左为高位和以右为高位如果只是快速查询每个字串的哈希值,用以左为高位比较简单,即\[Hash[l...r]=Hash[1...r]-Hash[1...(l-1)]\timesbase^{r-l+1}\]但是如果有修改操作,需要将每一位的Hash值存......
  • 2302. 统计得分小于 K 的子数组数目(双指针,贡献法,子数组问题)
     枚举子数组问题,常见有固定一个点,枚举另一个端点,还有枚举中间点。本题使用双指针算法,对右端点进行枚举,每次累加[l,r]区间内,所有以右端点为结尾的子数组对答案的贡献度,也就是长度r-l+1classSolution:defcountSubarrays(self,nums:List[int],k:int)->int:......
  • react中数组的操作
    添加元素:你可以使用push方法来在数组的末尾添加一个元素,或者使用unshift方法来在数组的开头添加一个元素。你也可以使用concat方法或者扩展运算符...来合并两个数组。letarr=[1,2,3];arr.push(4);//arrisnow[1,2,3,4]arr.unshift(0);//arrisnow[0,1,2,3,......
  • PTA|C语言|数组练习题
    --------------------------------------------------------------------------------求最大值及其下标本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。输入格式:输入在第一行中给出一个正整数n(1<n≤10)。第二行输入n个整数,用空格分开。输出格式:在一行......
  • 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II
    977.有序数组的平方,209.长度最小的子数组,59.螺旋矩阵II 977.有序数组的平方思路:分别从数组的左,右向另一侧/中间趋近,新建立一个数组接收(有序序列)(动态地在过程中接收数据)  拓展为各个任务分配工作指针,形成多指针有序数字序......
  • 代码随想训练营第五十二天(Python)| 300.最长递增子序列、674. 最长连续递增序列、718.
    300.最长递增子序列classSolution:deflengthOfLIS(self,nums:List[int])->int:iflen(nums)<=1:returnlen(nums)#dp数组代表以nums[i]结尾的最长递增子序列长度为dp[i]dp=[1]*len(nums)res=1......
  • 数状数组
    1.循环右移,老套路了,直接开2n数组然后利用树状数组进行区间求和和单点修改,每次减去之前以及出现过的值Problem-E-Codeforces1#include<bits/stdc++.h>2usingnamespacestd;34constintN=1e6+10;56intt;7intc[N*2];8intsum(intx)9{......
  • 【差分数组】我的日程安排表
    一、我的日程安排表I题目链接:我的日程安排表I实现一个MyCalendar类来存放你的日程安排。如果要添加的日程安排不会造成重复预订,则可以存储这个新的日程安排。当两个日程安排有一些时间上的交叉时(例如两个日程安排都在同一时间内),就会产生重复预订。日程可以用一对整数......
  • 【C语言】【二级】移动一维数组中的内容;若数组中有n个整数,要求把下标从0到p的数组元
    题目请编写函数fun,函数的功能是:移动一维数组中的内容;若数组中有n个整数,要求把下标从0到p(含p,p小于等于n-1)的数组元素平移到数组的最后。例如,一维数组中的原始内容为:1,2,3,4,5,6,7,8,9,10;p的值为3。移动后,一维数组中的内容应为:5,6,7,8,9,10,1,2,3,4。考点一维数组、......