news 2026/7/15 4:05:35

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/7/14 20:40:36

Conda update失败回滚机制设计

Conda Update 失败回滚机制设计 在人工智能与数据科学项目中&#xff0c;一个常见的噩梦是&#xff1a;你正准备复现一篇论文的实验结果&#xff0c;一切代码就绪&#xff0c;却在运行时突然报错——某个依赖库版本不兼容。检查后发现&#xff0c;几天前的一次 conda update 意…

作者头像 李华
网站建设 2026/7/8 2:37:55

使用Miniconda构建大模型微调SaaS服务平台

使用Miniconda构建大模型微调SaaS服务平台 在大模型研发日益普及的今天&#xff0c;一个常见的痛点浮出水面&#xff1a;为什么同一个微调脚本&#xff0c;在研究员本地能顺利收敛&#xff0c;到了生产环境却频频报错&#xff1f;答案往往藏在一个看似不起眼的地方——Python环…

作者头像 李华
网站建设 2026/7/8 2:42:02

如何精通vue-grid-layout:从配置到实战的完整指南

如何精通vue-grid-layout&#xff1a;从配置到实战的完整指南 【免费下载链接】vue-grid-layout A draggable and resizable grid layout, for Vue.js. 项目地址: https://gitcode.com/gh_mirrors/vu/vue-grid-layout 还在为Vue项目中的拖拽布局配置而头疼吗&#xff1f…

作者头像 李华
网站建设 2026/7/8 2:40:16

计算机毕业设计springboot养老院管理系统 基于Spring Boot的智慧养老院信息化管理系统开发 Spring Boot框架下的养老院综合管理平台设计与实现

计算机毕业设计springboot养老院管理系统wl53e &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。随着人口老龄化的加剧&#xff0c;养老院作为老年人生活照料和护理的重要场所&…

作者头像 李华
网站建设 2026/7/8 2:40:56

VSCode ESLint扩展终极配置指南:从入门到精通

VSCode ESLint扩展终极配置指南&#xff1a;从入门到精通 【免费下载链接】vscode-eslint VSCode extension to integrate eslint into VSCode 项目地址: https://gitcode.com/gh_mirrors/vs/vscode-eslint VSCode ESLint扩展是JavaScript和TypeScript开发者的必备工具&…

作者头像 李华
网站建设 2026/7/8 2:39:36

Miniconda初始化失败?教你正确执行conda init

Miniconda初始化失败&#xff1f;教你正确执行conda init 在现代数据科学与AI开发中&#xff0c;一个常见的“拦路虎”并不是模型训练不收敛&#xff0c;也不是GPU显存不足&#xff0c;而是——打开终端后输入 conda --version&#xff0c;却弹出一句冰冷的提示&#xff1a; co…

作者头像 李华