news 2026/7/19 9:18:05

LeetCode 3075.幸福值最大化的选择方案:排序

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LeetCode 3075.幸福值最大化的选择方案:排序

【LetMeFly】3075.幸福值最大化的选择方案:排序

力扣题目链接:https://leetcode.cn/problems/maximize-happiness-of-selected-children/

给你一个长度为n的数组happiness,以及一个正整数k

n个孩子站成一队,其中第i个孩子的幸福值happiness[i]。你计划组织k轮筛选从这n个孩子中选出k个孩子。

在每一轮选择一个孩子时,所有尚未被选中的孩子的幸福值将减少1。注意,幸福值不能变成负数,且只有在它是正数的情况下才会减少。

选择k个孩子,并使你选中的孩子幸福值之和最大,返回你能够得到的最大值

示例 1:

输入:happiness = [1,2,3], k = 2输出:4解释:按以下方式选择 2 个孩子: - 选择幸福值为 3 的孩子。剩余孩子的幸福值变为 [0,1] 。 - 选择幸福值为 1 的孩子。剩余孩子的幸福值变为 [0] 。注意幸福值不能小于 0 。 所选孩子的幸福值之和为 3 + 1 = 4 。

示例 2:

输入:happiness = [1,1,1,1], k = 2输出:1解释:按以下方式选择 2 个孩子: - 选择幸福值为 1 的任意一个孩子。剩余孩子的幸福值变为 [0,0,0] 。 - 选择幸福值为 0 的孩子。剩余孩子的幸福值变为 [0,0] 。 所选孩子的幸福值之和为 1 + 0 = 1 。

示例 3:

输入:happiness = [2,3,4,5], k = 1输出:5解释:按以下方式选择 1 个孩子: - 选择幸福值为 5 的孩子。剩余孩子的幸福值变为 [1,2,3] 。 所选孩子的幸福值之和为 5 。

提示:

  • 1 <= n == happiness.length <= 2 * 105
  • 1 <= happiness[i] <= 108
  • 1 <= k <= n

解题方法:排序

题目翻译:

每个孩子都有一个价值,一次只能压榨一个孩子的价值。每剥夺一个孩子的价值,其他娃子都会因为受到惊吓而价值减一,一旦某娃子没有了使用价值就会被立刻丢弃。

问最多压榨k个娃子最多夺取多少总价值。

怎么选?当然是按照价值大的优先选。没被压榨过的娃子们也会随着时间的流逝人老珠黄,但是没办法,一次只能压榨一个。

让娃子们俺价值从大到小排个序,每次压榨一个,第几次压榨被压榨孩子的价值就会减少几减1。

  • 时间复杂度O ( n log ⁡ n ) O(n\log n)O(nlogn)
  • 空间复杂度O ( log ⁡ n ) O(\log n)O(logn)

AC代码

C++
/* * @LastEditTime: 2025-12-25 12:59:03 */typedeflonglongll;classSolution{public:llmaximumHappinessSum(vector<int>&happiness,intk){sort(happiness.begin(),happiness.end(),greater<>());ll ans=0;for(inti=0;i<k;i++){ans+=max(0,happiness[i]-i);}returnans;}};
C++

当然,前娃都没价值的时候后娃子肯定也没价值了,可直接提前完工。

/* * @LastEditTime: 2025-12-25 13:00:12 */typedeflonglongll;classSolution{public:llmaximumHappinessSum(vector<int>&happiness,intk){sort(happiness.begin(),happiness.end(),greater<>());ll ans=0;for(inti=0;i<k;i++){happiness[i]-=i;if(happiness[i]<=0){returnans;}ans+=happiness[i];}returnans;}};
Python
''' LastEditTime: 2025-12-25 13:02:05 '''fromtypingimportListclassSolution:defmaximumHappinessSum(self,happiness:List[int],k:int)->int:returnsum(max(0,h-i)fori,hinenumerate(sorted(happiness,reverse=True)[:k]))
Java
/* * @LastEditTime: 2025-12-25 13:18:34 */importjava.util.Arrays;classSolution{publiclongmaximumHappinessSum(int[]happiness,intk){Arrays.sort(happiness);longans=0;intn=happiness.length;for(inti=0;i<k;i++){if(happiness[n-i-1]<=i){returnans;}ans+=happiness[n-i-1]-i;}returnans;}}
Go
/* * @LastEditTime: 2025-12-25 13:08:10 */packagemainimport"sort"funcmaximumHappinessSum(happiness[]int,kint)(ansint64){sort.Slice(happiness,func(i,jint)bool{returnhappiness[i]>happiness[j]})fori:=0;i<k;i++{happiness[i]-=iifhappiness[i]<=0{return}ans+=int64(happiness[i])}return}
Rust
/* * @LastEditTime: 2025-12-25 13:12:12 */implSolution{pubfnmaximum_happiness_sum(muthappiness:Vec<i32>,k:i32)->i64{letmutans:i64=0;happiness.sort_by(|a:&i32,b:&i32|b.cmp(a));foriin0..k{ifhappiness[iasusize]<=i{returnans;}ans+=(happiness[iasusize]-i)asi64;}ans}}

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

千篇源码题解已开源

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/17 13:59:11

【稀缺资源】Open-AutoGLM源码获取通道与私有化部署技术内幕曝光

第一章&#xff1a;智谱Open-AutoGLM开源下载教程环境准备与依赖安装 在开始下载和使用 Open-AutoGLM 之前&#xff0c;需确保本地开发环境已配置 Python 3.8 或更高版本&#xff0c;并建议使用虚拟环境以隔离项目依赖。可通过以下命令创建并激活虚拟环境&#xff1a;# 创建虚拟…

作者头像 李华
网站建设 2026/7/17 4:10:35

11、无线攻击调查:原理、测试与防范策略

无线攻击调查:原理、测试与防范策略 1. 无线攻击现状与风险 如今,无线设备正将企业网络的边界从办公室扩展到周边建筑和公共街道。攻击者无需闯入办公室或绕过防火墙策略,就能利用企业无线安全漏洞,在短时间内侵入网络。像BJ’s Wholesale Club、Lowe’s Companies Inc.等…

作者头像 李华
网站建设 2026/7/17 15:59:05

27、TCP/IP网络中的流量与拥塞控制技术解析

TCP/IP网络中的流量与拥塞控制技术解析 在TCP/IP网络中,流量控制和拥塞控制是确保网络高效、稳定运行的关键技术。下面将详细介绍几种常见的拥塞控制机制,包括TCP Vegas、带显式拥塞通知(ECN)的TCP,以及EASY速率基流量控制方案。 1. TCP Vegas拥塞控制机制 TCP Vegas是…

作者头像 李华
网站建设 2026/7/17 6:13:17

28、高速网络中的QoS路由:原理与实现

高速网络中的QoS路由:原理与实现 1. QoS路由概述 在传统数据网络中,路由主要关注的是连通性。路由协议通常使用单一指标(如跳数或延迟)来描述网络,并采用最短路径算法进行路径计算,而往往忽略了不同数据包或流可能具有的服务质量(QoS)要求。这就导致路由决策在不考虑…

作者头像 李华
网站建设 2026/7/17 14:18:03

【智谱Open-AutoGLM论文精读】:3步搞懂大模型自动任务生成机制

第一章&#xff1a;智谱Open-AutoGLM论文核心思想智谱AI推出的Open-AutoGLM项目&#xff0c;旨在构建一个面向自然语言处理任务的自动化大模型调优框架。该框架融合了提示工程、模型微调与任务自适应机制&#xff0c;通过统一接口实现对多种下游任务的零样本或少样本高效迁移。…

作者头像 李华
网站建设 2026/7/18 4:31:01

AutoGLM如何颠覆AI编程?智谱最新论文技术细节全曝光,开发者必看

第一章&#xff1a;AutoGLM的诞生背景与核心理念随着大语言模型在自然语言处理领域的广泛应用&#xff0c;如何高效地将模型能力应用于实际业务场景成为关键挑战。传统模式下&#xff0c;开发者需手动编写提示词、设计流程逻辑并反复调试&#xff0c;成本高且难以规模化。在此背…

作者头像 李华