拿出最少数目的魔法豆

拿出最少数目的魔法豆

#resource / algorithm #type / snippet #status / evergreen #source / leetcode #algo / greedy

[!info] related notes 算法面试题型 MOC 贪心算法

拿出最少数目的魔法豆

题目

2171. 拿出最少数目的魔法豆 - 力扣(LeetCode)

题解

我们可以将 beans 从小到大排序后,枚举最终非空袋子中魔法豆的数目 v,将小于 v 的魔法豆全部清空,大于 v 的魔法豆减少至 v,这样所有非空袋子中的魔法豆就都相等了。

由于拿出魔法豆 + 剩余魔法豆 = 初始魔法豆之和,我们可以考虑最多能剩下多少个魔法豆,从而计算出最少能拿出多少个魔法豆。

var minimumRemoval = function(beans) {
    beans = beans.sort((a,b) => a-b);
    let max = -Infinity;
    let sum = 0;
    for (let i = 0; i < beans.length; i++) {
        sum += beans[i];
        max = Math.max(max, beans[i] * (beans.length - i))
    }
    return sum - max;
};

参考

作者:灵茶山艾府 链接:https://leetcode.cn/problems/removing-minimum-number-of-magic-beans/solutions/1262419/pai-xu-hou-yi-ci-bian-li-by-endlesscheng-36g8/ 来源:力扣(LeetCode) 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

创建于 2025/1/1 更新于 2026/5/27