643.子数组最大均数I(javascript)643.MaximumAverageSubarrayI
原创给你一个 n 由元素组成的整数数组 nums 和一个整数 k 。
请找出平均值最大 长度为 k 并输出最大平均值。
任何错误都更少 10-5 答案将被视为正确答案。
You are given an integer array nums consisting of n elements, and an integer k.
Find a contiguous subarray whose length is equal to k that has the maximum average value and return this value. Any answer with a calculation error less than 10-5 will be accepted.
示例 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
Number.MIN_SAFE_INTEGER代表在 JavaScript最小的保险箱integer型数字
解决问题的思路:
- 首先定义一个数字并赋值JavaScript最小的保险箱integer型数字
- 遍历数组范围(0~nums.length - k + 1)
- 成对长度k阵列的截距([i,i+k])用于遍历求和
- 那么长度是k数组的总和 和getMax 取最大值
-
getMax / k对于最终值
/**
- @param {number[]} nums
- @param {number} k
- @return {number} */ var findMaxAverage = function (nums, k) { let getMax = Number.MIN_SAFE_INTEGER; for (let i = 0; i < nums.length - k + 1; i++) { let number = 0 for (let j = i; j < i + k; j++) { number += nums[j] } getMax = Math.max(getMax, number) number = 0 } return getMax / k };
/**
- @param {number[]} nums
- @param {number} k
- @return {number} */ var findMaxAverage = function (nums, k) { let sum = 0; for (let i = 0; i < k; i++) { sum += nums[i]// 获得第一个 k 长度数组的总数用作参考。 } let getMax = sum for (let i = k; i < nums.length; i++) { sum = sum - nums[i - k] + nums[i] //滑格子 减去数组的第一位 在数组后面加一位 getMax = Math.max(getMax, sum)//获取最大值 } return getMax / k };
leetcode: https://leetcode.cn/problems/maximum-average-subarray-i/submissions/
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除
itfan123


