python 给出一个整数数字,有正有负,找一个长度大于等于k的一个子数组(即数组中相邻的k个数),使他的平均值最大。

给出一个整数数字,有正有负,找一个长度大于等于k的一个子数组(即数组中相邻的k个数),使他的平均值最大。
示例:
给出 nums = [1,12,-5,-6,50,3],k=3, 返回 15.667 // (-6+50+3) / 3 = 15.667

class Solution:
    def findMaxAverage(self, nums, k):
        left, right, cur_sum = 0, k, sum(nums[:k])
        max_sum = cur_sum
        while right < len(nums):
            cur_sum = cur_sum + nums[right] - nums[left]
            max_sum = max(max_sum, cur_sum)
            left, right = left + 1, right + 1
        return round((max_sum / k), 3)




if __name__ == '__main__':
    sol = Solution()
    nums = [1, 12, -5, -6, 50, 3]
    k = 3
    print(sol.findMaxAverage(nums, k))
# 15.667
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 描述 给出一个整数数组,有正有负。找到这样一个子数组,他的长度大于等于 k,且平均值最大。 注意事项 保证数组的大...
    6默默Welsh阅读 1,092评论 0 0
  • 简述 极客时间算法40讲中所出现的leetcode算法题 题目 【链表】reverse-linked-list(反...
    BestbpF阅读 4,509评论 0 4
  • 动态规划 111. 爬楼梯思路类似斐波那契数列注意考虑第 0 阶的特殊情况 272. 爬楼梯 II思路类似上题,只...
    6默默Welsh阅读 2,467评论 0 1
  • 初级算法 数组 1.从排序数组中删除重复项 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一...
    neo_ming阅读 613评论 0 1
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,428评论 0 2