数据结构和算法分析LeetCode

643. Maximum Average Subarray I

2018-09-13  本文已影响2人  楷书

Maximum Average Subarray I - LeetCode

algorithm - array

这是一道简单的Sliding window的算法。这里的window size = k,所以每次只要left pointer (i) 和 right pointer (j) 分别向后移动一位,然后计算sum,每次和maxSum比较即可。

class Solution {
    func findMaxAverage(_ nums: [Int], _ k: Int) -> Double {
        guard k <= nums.count else {
            return 0
        }

        var sum: Int = 0
        for j in 0..<k {
            sum = sum + nums[j]
        }

        var maxSum = sum
        var i = 0
        for j in k..<nums.count {
            sum = sum - nums[i]
            sum = sum + nums[j]
            i += 1
            maxSum = max(maxSum, sum)
        }

        return (Double)(maxSum) / (Double)(k)
    }
}
上一篇 下一篇

猜你喜欢

热点阅读