给你一个由 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
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/maximum-average-subarray-i
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
滑动窗口即可。
需要注意的是,
1. 由于除法开销比较大,所以不应该每次直接更新答案的值,而应该记录最大值,最后再得到答案。
2. Java 两整数相除是去掉了尾数。需要进行类型转换后再除。
class Solution { public double findMaxAverage(int[] nums, int k) { int left = 0; int right = 0; int sum = 0; for (; right < k; right ++) { sum += nums[right]; } int max = sum; for (; right < nums.length; left ++, right ++) { sum -= nums[left]; sum += nums[right]; max = Math.max(max, sum); } return (double) max / k; } }
标签:right,nums,int,平均数,sum,643,数组,max From: https://www.cnblogs.com/allWu/p/17361531.html