news 2026/4/16 16:12:44

leetcode 813. Largest Sum of Averages 最大平均值和的分组-耗时91%

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
leetcode 813. Largest Sum of Averages 最大平均值和的分组-耗时91%

Problem: 813. Largest Sum of Averages 最大平均值和的分组

解题过程

使用了动态规划的,耗时91%,若只使用回溯情况太多肯定会超时而且不好控制回溯的步长,所以考虑使用动态规划,存在两个变量,一个是K,另一个是数组长度n,所以动态规划的数组使用dp[k+1][n+1],vector<vector> dp(k+1, vector(n+1, 0.0));

首先计算数组的前缀和prefixSum,当k=1时,不论数组多长,都是取平均值,dp[1][j] = prefixSum[j] / (double)j;,然后双重循环,i是k的取值,j是数组长度,若i>=j也就是数组长度更短,此时每个数字单独做一组,累加也就是前缀和,if(j <= i) dp[i][j] = prefixSum[j];

若i<j,数组更长的,此时考虑将数组分成两部分,前一部分划分k-1次,最后一部分单独做1次,共k次,前一部分的最大值是dp[i-1][w],后一部分则是平均值(prefixSum[j] - prefixSum[w]) / (double)(j - w);,两者相加即可,最后拿到最大值就行

double mx = INT_MIN, tmp; for(int w = i - 1; w < j; w++) { tmp = dp[i-1][w] + (prefixSum[j] - prefixSum[w]) / (double)(j - w); if(mx < tmp) { mx = tmp; } } dp[i][j] = mx;

Code

class Solution { public: double largestSumOfAverages(vector<int>& nums, int k) { vector<int> prefixSum={0}; int s = 0; for(int& i : nums) { s += i; prefixSum.push_back(s); } int n = nums.size(); vector<vector<double>> dp(k+1, vector<double>(n+1, 0.0)); for(int j = 1; j <= n; j++) { dp[1][j] = prefixSum[j] / (double)j; } for(int i = 2; i <= k; i++) { for(int j = 1; j <= n; j++) { if(j <= i) { dp[i][j] = prefixSum[j]; } else { double mx = INT_MIN, tmp; for(int w = i - 1; w < j; w++) { tmp = dp[i-1][w] + (prefixSum[j] - prefixSum[w]) / (double)(j - w); if(mx < tmp) { mx = tmp; } } dp[i][j] = mx; } } } return dp[k][n]; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 14:49:58

重庆DEM数据终极指南:解锁三维地形分析新维度

重庆DEM数据终极指南&#xff1a;解锁三维地形分析新维度 【免费下载链接】重庆地区DEM数据集 探索重庆的地理奥秘&#xff0c;这份DEM数据集为你提供了详尽的高程、等高线与路网信息。无论是专业GIS分析还是三维可视化&#xff0c;tif、kmz和kml格式的多样选择都能满足你的需求…

作者头像 李华
网站建设 2026/4/16 12:28:58

GitHub热门项目复现:基于Miniconda-Python3.9环境

GitHub热门项目复现&#xff1a;基于Miniconda-Python3.9环境 在人工智能研究和开源协作日益深入的今天&#xff0c;一个常见的尴尬场景是&#xff1a;你兴致勃勃地克隆了一个GitHub上的热门项目&#xff0c;按照README执行安装命令&#xff0c;却在第一步就卡住了——“Module…

作者头像 李华
网站建设 2026/4/16 14:28:07

IEEE电力系统接线图完整解决方案:从理论到实践

IEEE电力系统接线图完整解决方案&#xff1a;从理论到实践 【免费下载链接】IEEE各节点系统接线图VISIO版 本仓库提供了一套详尽的电力系统接线图资源&#xff0c;专为电气工程领域的研究者、工程师及学者设计。此资源覆盖了IEEE标准中的多个典型系统&#xff0c;包括3节点、5节…

作者头像 李华
网站建设 2026/4/16 14:06:34

12-Factor Agents终极手册:用BAML解决LLM工具调用混乱难题

12-Factor Agents终极手册&#xff1a;用BAML解决LLM工具调用混乱难题 【免费下载链接】12-factor-agents 模块化构建LLM应用&#xff0c;确保生产级可靠性与高效交付。 项目地址: https://gitcode.com/GitHub_Trending/12/12-factor-agents 你是否曾经在LLM应用开发中遇…

作者头像 李华
网站建设 2026/4/15 17:29:57

Atmosphere自定义固件架构解析:从启动加载到系统重写

Atmosphere自定义固件架构解析&#xff1a;从启动加载到系统重写 【免费下载链接】Atmosphere Atmosphre is a work-in-progress customized firmware for the Nintendo Switch. 项目地址: https://gitcode.com/GitHub_Trending/at/Atmosphere Atmosphere是一个为Ninten…

作者头像 李华
网站建设 2026/4/16 15:29:36

地表最强程序员,再次出手了!

Linus Torvalds是个非常厉害的程序员&#xff0c;因为他有两个名扬天下的作品&#xff1a;Linux和Git。如果单论技术能力&#xff0c;有一个人&#xff0c;也许比Linus更强。我在看他主页项目列表的时候&#xff0c;感觉头都炸了。他开发了著名的模拟器QEMU和音视频处理库FFmpe…

作者头像 李华