LeetCode每日一题——813. 最大平均值和的分组

这篇具有很好参考价值的文章主要介绍了LeetCode每日一题——813. 最大平均值和的分组。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

LeetCode每日一题系列

题目:813. 最大平均值和的分组
难度:普通



题目

给定数组 nums 和一个整数 k 。我们将给定的数组 nums 分成 最多 k 个相邻的非空子数组 。 分数 由每个子数组内的平均值的总和构成。

注意我们必须使用 nums 数组中的每一个数进行分组,并且分数不一定需要是整数。

返回我们所能得到的最大 分数 是多少。答案误差在 10-6 内被视为是正确的。

示例

示例 1:

输入: nums = [9,1,2,3,9], k = 3
输出: 20.00000
解释: nums 的最优分组是[9], [1, 2,3], [9]. 得到的分数是 9 + (1 + 2 + 3) / 3 + 9 = 20. 我们也可以把 nums 分成[9, 1], [2], [3, 9]. 这样的分组得到的分数为 5 + 2 + 6 = 13, 但不是最大值.

示例 2:

输入: nums = [1,2,3,4,5,6,7], k = 4
输出: 20.50000

提示:

1 <= nums.length <= 100
1 <= nums[i] <= 104
1 <= k <= nums.length

思路

动态规划:
首先可以证明的要想分组的平均值只和最大,那么组数一定为k
其次使用动态规划文章来源地址https://www.toymoban.com/news/detail-635961.html

  • dp[i][j]表示分到nums[i]这个元素时分了j组的最大平均值之和
  • 状态转移方程分为两种情况:
    1、当j=1时,dp[i][j]就为nums从0到i-1的平均值
    2、当j>1时,将区间分为[0, x-1],[x, i-1], 其中 x≥j−1,这时方程就变为最大平均值和的分组,# 算法实例,leetcode,算法,数据结构,python,动态规划

题解

class Solution:
    def largestSumOfAverages(self, nums: List[int], k: int) -> float:
        n = len(nums)
        #记录前缀数组便于j=1的情况求均值
        prefix = list(accumulate(nums, initial=0))
        dp = [[0.0] * (k + 1) for _ in range(n + 1)]
        # j=1
        for i in range(1, n + 1):
            dp[i][1] = prefix[i] / i
        # 状态转移
        for j in range(2, k + 1):
            for i in range(j, n + 1):
                for x in range(j - 1, i):
                    dp[i][j] = max(dp[i][j], dp[x][j - 1] + (prefix[i] - prefix[x]) / (i - x))
        return dp[n][k]

到了这里,关于LeetCode每日一题——813. 最大平均值和的分组的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Numpy中统计函数的讲解:平均值、中位数、标准差、方差、最大最小值、求和、加权平均数

    目录 统计函数: Numpy 能方便地求出统计学常见的描述性统计量 一:Numpy中统计函数--平均值 求平均值 二:Numpy中统计函数--中位数 中位数 np.median 平均数和中位数的区别 三:Numpy中统计函数--标准差 求标准差ndarray.std() 四:Numpy中统计函数--方差 求方差ndarray.var() 标准差和方差

    2024年02月06日
    浏览(35)
  • Java8用Stream流一行代码实现数据分组统计,排序,最大值、最小值、平均值、总数、合计

    Java8对数据处理可谓十分流畅,既不改变数据,又能对数据进行很好的处理,今天给大家演示下,用Java8的Stream如何对数据进行分组统计,排序,求和等 汇总统计方法 找到汇总统计的方法。这些方法属于java 8的汇总统计类。 getAverage(): 它返回所有接受值的平均值。 getCount():

    2023年04月20日
    浏览(49)
  • DB SQL 转 ES DSL(支持多种数据库常用查询、统计、平均值、最大值、最小值、求和语法)...

    1. 简介   日常开发中需要查询 Elasticsearch 中的数据时,一般会采用 RestHighLevelClient 高级客户端封装的API。项目中一般采用一种或多种关系型数据库(如: Mysql 、 PostgreSQL 、 Oracle 等) + NoSQL(如: Elasticsearch )存储方案;不同关系数据库可以采用 Mybatis-Plus 方案屏蔽数据库的方言

    2024年01月17日
    浏览(37)
  • 各种平均值:算术平均值,几何平均值,调和平均值等

    平均值概述 平均数反映了一组数据的一般水平,最常见的平均数是算术平均数,除了算数平均数外,还有几何平均数,调和平均数,加权平均数等。 算术平均值(Arithmetic Mean) 公式解读:表示为所有项之和再除以总数。 应用场景:算术平均值是我们生活中最常见的平均值,

    2024年02月11日
    浏览(24)
  • 【力扣每日一题】2023.8.8 任意子数组和的绝对值的最大值

    目录 题目: 示例: 分析: 代码: 题目给我们一个数组,让我们找出它的绝对值最大的子数组的和。 这边的子数组是要求连续的,让我们找出一个元素之和的绝对值最大的连续子数组。 要绝对值最大,那么就是两种情况,最大的正数以及最小的负数,所以我们可以兵分两路

    2024年02月13日
    浏览(28)
  • 【2465. 不同的平均值数目】

    来源:力扣(LeetCode) 描述: 给你一个下标从 0 开始长度为 偶数 的整数数组 nums 。 只要 nums 不是 空数组,你就重复执行以下步骤: 找到 nums 中的最小值,并删除它。 找到 nums 中的最大值,并删除它。 计算删除两数的平均值。 两数 a 和 b 的 平均值 为 (a + b) / 2 。 比方说,

    2024年02月07日
    浏览(26)
  • 计算 Python 列表的平均值

    计算 Python 列表的平均值 在 Python 中,我们可以使用多种方法计算列表的平均值。这里将介绍两种常用的方法。 第一种方法是直接使用 Python 的内置函数 sum() 和 len() 。这两个函数分别用于计算列表中所有元素的和,以及列表的长度。我们可以使用这两个函数来计算列表的平均

    2024年02月08日
    浏览(26)
  • 替换Excel偶数行为上下平均值

    169个直接转换上下两行转换实现代码 注: 如果原Excel表格中的行数为奇数,那么输出的新旧Excel文件的最后一行都会是None。而如果原Excel表格中的行数是偶数行,那么新Excel文件的最后一行就可以显示出来(是我们把最后一行给复制来的)。 转换前后数据(169-169)[结果] x y z x y z

    2024年04月15日
    浏览(28)
  • python 求平均值(含代码示例)

    示例示例Python 求平均值的方法有很多种,下面以求列表中元素的平均值为例,提供代码示例。使用内置函数sum()和len(): Python 求平均值的方法有很多种,下面以求列表中元素的平均值为例,提供代码示例。 1. 使用内置函数sum()和len(): 2. 使用内置函数statistics.mean(): 3. 使用

    2024年02月06日
    浏览(33)
  • Verilog实现FPGA平均值计算

    Verilog实现FPGA平均值计算 在数字电路设计中,计算平均值是一个非常基础的操作。本文将通过Verilog语言来实现在FPGA中计算一个数据流的平均值。 首先,我们需要定义一个计数器和一个累加器来分别记录输入数据流的总数和总和。这里我们使用32位的寄存器作为计数器和累加

    2024年02月03日
    浏览(112)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包