【Leetcode_まとめ】643.サブ配列最大平均数I-python

871 ワード

Q: n個の整数が与えられ、平均数が最大で長さがkの連続サブ配列が見出され、その最大平均数が出力される.
例1:
  : [1,12,-5,-6,50,3], k = 4
  : 12.75
  :       (12-5-6+50)/4 = 51/4 = 12.75

リンク:https://leetcode-cn.com/problems/maximum-average-subarray-i/description/
考え方:直接暴力を振るうとタイムアウトになるので和を求める処理は毎回和を求める操作から頭位をマイナスして末位をプラスする
コード:
class Solution:
    def findMaxAverage(self, nums, k):
        """
        :type nums: List[int]
        :type k: int
        :rtype: float
        """
        res = sum(nums[0:k])
        max_ = res
        for i in range(len(nums)-k):
            if len(nums[i:i+k]) != k:
                break
            res = res - nums[i] + nums[i + k]
            if res > max_:
                max_ = res
        return max_/k