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

news2024/11/27 14:43:31

LeetCode每日一题系列

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


文章目录

  • LeetCode每日一题系列
  • 题目
  • 示例
  • 思路
  • 题解


题目

给定数组 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
其次使用动态规划

  • 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,这时方程就变为在这里插入图片描述

题解

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]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/42206.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

制作一个简单HTML西安旅游网页(HTML+CSS)

&#x1f468;‍&#x1f393;学生HTML静态网页基础水平制作&#x1f469;‍&#x1f393;&#xff0c;页面排版干净简洁。使用HTMLCSS页面布局设计,web大学生网页设计作业源码&#xff0c;这是一个不错的旅游网页制作&#xff0c;画面精明&#xff0c;排版整洁&#xff0c;内容…

Java以form-data(表单)的形式调用第三方接口

Java以form-data&#xff08;表单&#xff09;的形式调用第三方接口前言本文目标用到的类工具类及测试信息工具类代码测试信息测试代码测试结果遇到的问题getContentLength()的滥用调用的错误慎用请求输出流flush()方法未写入标识调用错误总结前言 之前写的调用第三方接口&…

【机器学习】推荐系统

推荐系统的工作原理 推荐模型如何进行推荐将取决于您拥有的数据类型。如果您只拥有过去发生的交互数据&#xff0c;您可能有兴趣使用协作过滤。如果您有描述用户及其与之交互过的物品的数据&#xff08;例如&#xff0c;用户的年龄、餐厅的菜系、电影的平均评价&#xff09;&a…

Windows线程 信号量 CreateSemaphore创建信号量、RelaseSemaphore设置信号量

信号量 相关问题 类似于事件&#xff08;作用类似&#xff09;&#xff0c;解决通知的相关问题。但提供一个计数器&#xff0c;可以设置次数。 信号量的使用 1.创建信号量 HANDLE CreateSemaphore( LPSECURITY_ATTRIBUTES lpSemaphoreAttributes,//参数作废&#xff0c;基本用N…

临近期末,这些题不来看看吗?(下)

目录 1、打印1~100之间所有3的倍数&#xff08;三种方法&#xff09; 2、写出3给整数从大到小输出 3、给定两个数&#xff0c;求这两个数的最大公约数 4、 递归实现n的k次方 5、写一个递归函数DigitSum(n),输入一个非负整数&#xff0c;返回组成它的数字之和 6、编写一个…

二叉树模板套题——相同的树的应用

文章目录力扣100. 相同的树递归展开图力扣572. 另一棵树的子树递归展开图力扣101. 对称二叉树递归展开图力扣100. 相同的树 给你两棵二叉树的根节点 p 和 q &#xff0c;编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xf…

四、nginx正向代理

一、正向代理 解释&#xff1a;正向代理指的是客户端通过访问目标服务端&#xff0c;再由目标服务端来转发流量访问互联网 结构图如下&#xff1a; 好处&#xff1a;这样做的好处是&#xff0c;当客户端通过服务端访问互联网某个网站时&#xff0c;该网站获得的IP地址是服务…

STEAM上的一款电路模拟神器 — CRUMB Circuit Simulator

摘要&#xff1a;这几天在逛steam商店时&#xff0c;发现了一款有意思的电路仿真软件CRUMB Circuit Simulator&#xff08;CRUMB电路模拟器&#xff09;&#xff0c;觉得挺有意思的&#xff0c;就下载了玩了一下。 这款模拟电路软件的东西不多&#xff0c;基础的元器件都有&…

关于赚钱这件事,必须做到「金钱场」、「认知场」和「人脉场」三场统一

每周末&#xff0c;我会将我付费星球内的精华文章&#xff0c;在每周六或周日以付费文章的方式在公众号分享给大家&#xff0c;如果你不想加入我的星球&#xff0c;还想看的话&#xff0c;可以在这里付费看。当然&#xff0c;加入星球会更划算&#xff0c;因为星球内内容更多&a…

ArcGIS基础:如何在大量数据里挑选随机样本(创建随机点工具)

【创建随机点】工具位于【采样】工具下&#xff0c;如下所示&#xff1a; 假如我们有一个需求&#xff0c;要在很多数据里随机选择10个数据&#xff0c;就可以使用该工具。 假如我这里有全国的县级数据&#xff0c;我想要在里面随机抽选10个县城。 原始数据如下&#xff1a; …

IPSec 基础介绍

IPSec是IETF&#xff08;Internet Engineering Task Force&#xff09;制定的一组开放的网络安全协议。它并不是一个单独的协议&#xff0c;而是一系列为IP网络提供安全性的协议和服务的集合&#xff0c;包括认证头AH&#xff08;Authentication Header&#xff09;和封装安全载…

【JavaScript高级】05-JavaScript中with、eval语句及严格模式的使用

with、eval及严格模式的使用with语句的使用&#xff08;了解&#xff09;eval函数严格模式了解严格模式开启严格模式严格模式的限制with语句的使用&#xff08;了解&#xff09; with语句的作用是将代码的作用域设置到一个特定的对象中。目的主要是为了简化多次编写同一个对象…

【学习笔记50】ES6的新增属性1

一、ES6 * ES6 * 其实就是JS发展过程中的某一个版本而已, 那个版本的版本号叫做ES6* JS* 在最初的时候, 是只有var关键可以声明变量* 随着版本的更新, 在某一个版本内推出了新的变量声明方式* * JS的更新* 在推出ES6的时候, 这个版本推出的新东西比较多…

[附源码]Python计算机毕业设计高校教材网上征订系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

SQL关键字详解

当前市场中&#xff0c;数据库在互联网整个技术链中的重要性是亘古不变的&#xff0c;站在实现业务功能的角度来说我们最常用的就是与数据库和缓存进行交互&#xff0c;而最终持久化存储最常见的依旧是关系型数据库。数据库中我们做常用的就是SQL基本查询语言&#xff0c;甚至有…

临近期末,这些题不来看看吗?(上)

目录 1、在屏幕上输入9*9乘法表 2、输入一个值&#xff0c;打印对应的乘法口诀表 3、求十个整数的最大值 4、分数求和&#xff1a;计算1/1 - 1/2 1/3 - 1/4 1/5 ... 1/99 - 1/100&#xff08;3种方法&#xff09; 5、编写程序数一下&#xff0c;1到100的所有整数中出现多…

ggrcs 包2.4绘图实际操作演示(1)

ggrcs 包2.4版本已经发布一段时间了&#xff0c;大概几个月了吧&#xff0c;收到不少好评&#xff0c; 没听说太大的问题&#xff0c;最主要的问题有两个&#xff1a; 1.是说变量不是数字变量。 2.是说数据超过10万&#xff0c;无法处理 第一个问题非常好处理&#xff0c;这…

【精品】k8s的存储PV与PVC详解

概述 PV(Persistent Volume)一般情况下PV由kubernetes管理员进行创建和配置,它与底层具体的共享存储技术有关,并通过插件完成与共享存储的对接。 PVC(Persistent Volume Claim)是用户对于存储需求的一种声明。换句话说,PVC其实就是用户向kubernetes系统发出的一种资源需…

vscode开发maven的javaweb项目,并部署到tomcat及配置

1、安装并配置JAVA环境 我的是用的jdk1.8.0_181&#xff08;安装自行解决&#xff0c;直接可以下载免安装配置环境&#xff09; 配置JAVA_HOME&#xff0c;设置路径为C:\Program Files\Java\jdk1.8.0_181, 添加bin到path环境变量&#xff1a; 2、安装Maven 1&#xff09;官网…

垃圾分类小程序系统毕业设计,垃圾分类小程序系统设计与实现,垃圾分类系统毕设参考

功能清单 【管理员功能】 会员管理&#xff1a;查看网站所有注册会员信息&#xff0c;支持删除 资讯录入&#xff1a;录入资讯标题、时间、资讯内容等 管理资讯&#xff1a;查看现有资讯列表&#xff0c;支持修改和删除功能 留言管理&#xff1a;查看小程序留言列表&#xff0…