Leetcode 3075. Maximize Happiness of Selected Children

  • [Leetcode 3075. Maximize Happiness of Selected Children](#Leetcode 3075. Maximize Happiness of Selected Children)
    • [1. 解题思路](#1. 解题思路)
    • [2. 代码实现](#2. 代码实现)

1. 解题思路

这一题只需要想清楚一个点就行了:

  • 正常情况下,对于确定的n次选择,无论顺序如何,其得到的score都是相同的,要想要score出现差别,有需要有大量的应该减的score无法被减去,即那些孩子的happiness提前降至0了。

因此,我们的选取策略就是将孩子按照happiness进行排序,然后选择最大的k个孩子从大到小依次进行选取就行了,这样就能确保获得最大的score。

2. 代码实现

给出python代码实现如下:

python 复制代码
class Solution:
    def maximumHappinessSum(self, happiness: List[int], k: int) -> int:
        happiness = sorted(happiness, reverse=True)
        ans, dec = 0, 0
        for h in happiness[:k]:
            if h <= dec:
                break
            ans += h - dec
            dec += 1
        return ans

提交代码评测得到:耗时786ms,占用内存43.3MB。

相关推荐
小年糕是糕手1 天前
【数据结构】算法复杂度
c语言·开发语言·数据结构·学习·算法·leetcode·排序算法
Guan jie1 天前
10.6作业
数据结构·算法·排序算法
小贾要学习2 天前
编程中常见的排序算法
数据结构·c++·算法·排序算法
hadage2332 天前
--- 常见排序算法汇总 ---
算法·排序算法
Espresso Macchiato2 天前
Leetcode 3702. Longest Subsequence With Non-Zero Bitwise XOR
leetcode medium·异或操作·leetcode 3702·leetcode周赛470
小许学java2 天前
七大排序算法的基本原理
数据结构·算法·排序算法
-雷阵雨-3 天前
数据结构——排序算法全解析(入门到精通)
java·开发语言·数据结构·排序算法·intellij-idea
Espresso Macchiato3 天前
Leetcode 3694. Distinct Points Reachable After Substring Removal
滑动窗口·leetcode medium·leetcode双周赛166·leetcode 3694
Espresso Macchiato3 天前
Leetcode 3698. Split Array With Minimum Difference
leetcode medium·分类讨论·leetcode周赛469·leetcode 3698
又是忙碌的一天3 天前
java学习:四大排序
java·学习·排序算法