news 2026/5/1 7:24:20

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/19 9:02:01

快速掌握数据预处理与智能转换实战指南

快速掌握数据预处理与智能转换实战指南 【免费下载链接】telegraf 插件驱动的服务器代理&#xff0c;用于收集和报告指标。 项目地址: https://gitcode.com/GitHub_Trending/te/telegraf 在监控系统运维和数据分析工作中&#xff0c;原始数据往往存在格式混乱、信息缺失…

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

终极指南:快速掌握Fort Firewall的完整Windows网络安全配置

想要彻底掌控Windows网络环境的安全防护吗&#xff1f;&#x1f680; Fort Firewall作为一款高性能的Windows防火墙解决方案&#xff0c;通过精细的应用过滤和网络状态监测功能&#xff0c;帮助用户构建坚不可摧的网络安全防线。本指南将带你从零开始&#xff0c;轻松掌握这款强…

作者头像 李华
网站建设 2026/4/27 8:37:47

在云平台使用Miniconda部署PyTorch训练任务

在云平台使用 Miniconda 部署 PyTorch 训练任务 在深度学习项目日益复杂的今天&#xff0c;一个看似简单却常被忽视的问题正困扰着无数开发者&#xff1a;为什么本地跑通的代码&#xff0c;一上云就报错&#xff1f;明明安装了相同的库版本&#xff0c;为何训练结果无法复现&am…

作者头像 李华
网站建设 2026/4/29 14:27:14

GLUT多版本终极方案:告别位数兼容性困扰

GLUT多版本终极方案&#xff1a;告别位数兼容性困扰 【免费下载链接】GLUT32位和64位版资源下载 GLUT 32位和64位版资源下载本仓库提供了一个资源文件的下载&#xff0c;包含了GLUT的32位和64位版本 项目地址: https://gitcode.com/open-source-toolkit/db0e5 还在为GLU…

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

Miniconda配置PyTorch后测试GPU可用性代码

Miniconda配置PyTorch后测试GPU可用性代码 在深度学习项目启动前&#xff0c;最令人沮丧的莫过于写好了模型代码&#xff0c;结果发现PyTorch根本没用上GPU——训练速度慢如蜗牛。更糟的是&#xff0c;torch.cuda.is_available() 返回 False&#xff0c;而你却不知道问题出在驱…

作者头像 李华