643. Maximum Average Subarray I

Leetcode link

题目简介

/**
 * @param {number[]} nums
 * @param {number} k
 * @return {number}
 */

题目给我们一个数字数组 nums 以及一个数字 k

要求我们在数组中找到长度为 k 的连续子数组使其平均值最大

最后返回平均值

解题思路

这题我们需要使用滑动窗口的思路来求解

我们构建一个长度为 k 的滑动窗口,在每次滑动的时候记录当前窗口元素之和

然后我们用一个变量 max 来记录和最大的窗口是多少

最后我们用 max / k 就能获得平均值了

Javascript

/**
 * @param {number[]} nums
 * @param {number} k
 * @return {number}
 */
var findMaxAverage = function (nums, k) {
    let max = 0
    let left = 0
    let right = 0
    while (right < k) {
        max += nums[right]
        right++
    }
    let prev = max

    while(right < nums.length) {
        const value = prev + nums[right] - nums[left]
        max = Math.max(value, max)
        prev = value
        right++
        left++
    }

    return max / k
};

results matching ""

    No results matching ""