643.子数组最大均数I(javascript)643.MaximumAverageSubarrayI

原创
小哥 3年前 (2022-11-10) 阅读数 9 #大杂烩

给你一个 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型数字

解决问题的思路:

  1. 首先定义一个数字并赋值JavaScript最小的保险箱integer型数字
  2. 遍历数组范围(0~nums.length - k + 1)
  3. 成对长度k阵列的截距([i,i+k])用于遍历求和
  4. 那么长度是k数组的总和 和getMax 取最大值
  5. 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/

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除