Leetcode 643.子数组最大平均数I
子数组最大平均数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,当k接近n时,时间复杂度~n平方,所以放弃这种算法。
我们初始化一个sum变量保存元素之和(初始化为0),一个maxAvg保存最大的平均数(初始化为Double下的负数最小值),这里需要强调一下, Double.NEGATIVE_INFINITY 表示负无穷,Double.MIN_VALUE 表示的是64位双精度值能表示的最小正数。然后开始遍历数组元素,每一步首先都将sum更新,然后判断当前索引是否大于等于k - 1,当等于k - 1时,对当前sum求平均,与maxAvg比较,当大于k - 1时,需要减去nums[i - k],这样就实现了动态更新sum,当小于k - 1时,继续循环。最后返回maxAvg即可。
public class Solution {
public double findMaxAverage(int[] nums, int k) {
/**
* Double.NEGATIVE_INFINITY 表示负无穷
* Double.MIN_VALUE 表示的是64位双精度值能表示的最小正数
*/
double maxAvg = Double.NEGATIVE_INFINITY;
double sum = 0.0;
for (int i = 0; i < nums.length; i++) {
sum += nums[i];
if (i >= k - 1) {
if (i > k - 1) {
sum = sum - nums[i - k];
}
if (sum / k > maxAvg) maxAvg = sum / k;
}
}
return maxAvg;
}
}
Leetcode 643.子数组最大平均数I的更多相关文章
- LeetCode 643. 子数组最大平均数 I(Maximum Average Subarray I)
643. 子数组最大平均数 I 643. Maximum Average Subarray I 题目描述 给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数. LeetCo ...
- Java实现 LeetCode 643 子数组最大平均数 I(滑动窗口)
643. 子数组最大平均数 I 给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数. 示例 1: 输入: [1,12,-5,-6,50,3], k = 4 输出: 12.7 ...
- 力扣643.子数组最大平均数I-C语言实现
题目 给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数. 示例: 输入:[1,12,-5,-6,50,3], k = 4 输出:12.75 解释:最大平均数 (12-5- ...
- 【LeetCode】643. 子数组最大平均数 I Maximum Average Subarray I (Python)
作者: 负雪明烛 id: fuxuemingzhu 公众号:每日算法题 目录 题目描述 题目大意 解题方法 方法一:preSum 方法二:滑动窗口 刷题心得 日期 题目地址:https://leetc ...
- leetcode 643. Maximum Average Subarray I 子数组最大平均数 I
一.题目大意 https://leetcode.cn/problems/maximum-average-subarray-i/ 给你一个由 n 个元素组成的整数数组 nums 和一个整数 k . 请你 ...
- [LC]643题 Maximum Average Subarray I(子数组最大平均数 I)
①英文题目 Given an array consisting of n integers, find the contiguous subarray of given length k that h ...
- [Swift]LeetCode643. 子数组最大平均数 I | Maximum Average Subarray I
Given an array consisting of n integers, find the contiguous subarray of given length k that has the ...
- [LeetCode] Maximum Average Subarray II 子数组的最大平均值之二
Given an array consisting of n integers, find the contiguous subarray whose length is greater than o ...
- [LeetCode] 644. Maximum Average Subarray II 子数组的最大平均值之二
Given an array consisting of n integers, find the contiguous subarray whose length is greater than o ...
随机推荐
- OpenSSL context 的几个参数
NAME SYNOPSIS DESCRIPTION NOTES BUGS RETURN VALUES EXAMPLES SEE ALSO NAME SSL_CTX_set_verify, SSL_se ...
- PPII打不开 更改I.bat
http://jingyan.baidu.com/article/3a2f7c2e7d277126afd6118d.html
- IOS enum(枚举)使用
typedef enum { MJMessageTypeMe=, MJMessageTypeOther }MJMessageType; /** *信息的类型 * */ @property (nonat ...
- IE中iframe跨域访问
http://blog.csdn.net/ghsau/article/details/13747943
- IPython安装过程 @win7 64bit
http://www.360doc.com/content/14/0902/11/16740871_406476389.shtml 为了测验测验一下IPython的应用,今天折腾了好久的从安装包msi ...
- CSVDE
csvde -f C:\export_OrganizationalUnit.csv -r '(objectClass=organizationalUnit)' -l 'displayName,prox ...
- AngularJS 数字
AngularJS数字就像JavaScript数字 AngularJS实例: <!DOCTYPE html><html><head><meta http-eq ...
- 移动端调试利器-vConsole
现在移动端开发越来越火,随之而来的问题也越来越多,今天给大家介绍一款移动端调试神器,vconsole. 一.先引用文件,可以从https://www.bootcdn.cn/vConsole/下载,也可 ...
- 理解Express 中间件
Express 中间件 Express程序基本上是一系列中间件函数的调用.中间件就是一个函数, 接受 req.res.next几个参数. 中间件函数可以执行任何代码, 对请求和响应对象进行修改, 结束 ...
- selinux详解及配置文件
selinux详解 selinux 的全称是Security Enhance Linux,就是安全加强的Linux.在Selinux之前root账号能够任意的访问所有文档和服务 : 如果某个文件设为7 ...