6006. 拿出最少数目的魔法豆

简介: 笔记

题意


一个正整数数组 beans, 每位都有 beans[i] 个豆。从每位拿出一些豆,使得非0位的值都相同,求最少拿出的豆数目。


样例


输入:beans = [4,1,6,5]

输出:4

解释:


我们从有 1 个魔法豆的袋子中拿出 1 颗魔法豆。

剩下袋子中魔法豆的数目为:[4,0,6,5]

然后我们从有 6 个魔法豆的袋子中拿出 2 个魔法豆。

剩下袋子中魔法豆的数目为:[4,0,4,5]

然后我们从有 5 个魔法豆的袋子中拿出 1 个魔法豆。

剩下袋子中魔法豆的数目为:[4,0,4,4]

总共拿出了 1 + 2 + 1 = 4 个魔法豆,剩下非空袋子中魔法豆的数目相等。

没有比取出 4 个魔法豆更少的方案。


输入:beans = [2,10,3,2]

输出:7

解释:


我们从有 2 个魔法豆的其中一个袋子中拿出 2 个魔法豆。

剩下袋子中魔法豆的数目为:[0,10,3,2]

然后我们从另一个有 2 个魔法豆的袋子中拿出 2 个魔法豆。

剩下袋子中魔法豆的数目为:[0,10,3,0]

然后我们从有 3 个魔法豆的袋子中拿出 3 个魔法豆。

剩下袋子中魔法豆的数目为:[0,10,0,0]

总共拿出了 2 + 2 + 3 = 7 个魔法豆,剩下非空袋子中魔法豆的数目相等。

没有比取出 7 个魔法豆更少的方案。

思路


我们可以将 beans 从小到大排序后,枚举最终所有非空位豆的数目 x,小于 x 的豆清空,大于 x 的豆减少到 x。


结果:0000xxxxx, 需要拿掉的即为:ans = sum - (len - i) * x;

算法


思维 + 排序


代码


class Solution {
public:
    long long minimumRemoval(vector<int>& beans) {
        int len = beans.size();
        long long sum = 0, res;
        for (auto &x: beans) sum += x;
        res = sum;
        sort(beans.begin(), beans.end());
        for (int i = 0; i < len; i++) {
            res = min(res, sum - (len - i) * (long long)beans[i]);
        }
        return res;
    }
};
相关文章
优化是一种习惯●出发点是"站在靠近临界"的地方
优化是一种习惯●出发点是"站在靠近临界"的地方
57 0
|
8月前
|
算法 前端开发
拿出最少数目的魔法豆
拿出最少数目的魔法豆
53 0
|
安全 Windows
这5款软件虽然知名度不高,但不代表不好用
其实有许多工具,知名度不高,用的人也很少,不过并不代表它们不好用,小编励志做一个合格的搬运工,让大家都能用上好用的软件。
117 1
L1-077 大笨钟的心情 (15 分)
L1-077 大笨钟的心情 (15 分)
292 0
L1-077 大笨钟的心情 (15 分)
|
人工智能 算法
为什么很少有游戏支持场景破坏?是因为技术问题吗?
最近很多游戏狂热迷们正火热讨论的一个问题是:为什么很少有游戏支持场景破坏?说实话小编也非常好奇,于是乎小编去查了好多资料。接下来小编带领大家一起去深挖究竟!
149 0
为什么很少有游戏支持场景破坏?是因为技术问题吗?
|
存储 Dubbo Java
这个Map你肯定不知道,毕竟存在感确实太低了。 (上)
这个Map你肯定不知道,毕竟存在感确实太低了。 (上)
101 0
这个Map你肯定不知道,毕竟存在感确实太低了。 (上)
|
存储 API
这个Map你肯定不知道,毕竟存在感确实太低了。 (中)
这个Map你肯定不知道,毕竟存在感确实太低了。 (中)
135 0
这个Map你肯定不知道,毕竟存在感确实太低了。 (中)
|
存储 负载均衡 Dubbo
这个Map你肯定不知道,毕竟存在感确实太低了。 (下)
这个Map你肯定不知道,毕竟存在感确实太低了。 (下)
137 0
这个Map你肯定不知道,毕竟存在感确实太低了。 (下)
从即将放弃到找到自己满意的工作?
从即将放弃到找到自己满意的工作?
117 0
从即将放弃到找到自己满意的工作?

热门文章

最新文章