【力扣每日一题】力扣2171拿出最少数目的魔法豆

题目来源

力扣2171拿出最少数目的魔法豆

题目概述

给定一个 正整数 数组 beans ,其中每个整数表示一个袋子里装的魔法豆的数目。

请你从每个袋子中 拿出 一些豆子(也可以 不拿出),使得剩下的 非空 袋子中(即 至少还有一颗 魔法豆的袋子)魔法豆的数目 相等。一旦把魔法豆从袋子中取出,你不能再将它放到任何袋子中。

请返回你需要拿出魔法豆的 最少数目

解题思路

  1. 剩余的豆子数量肯定是某一个袋中豆子的数量(如果不是的话,其他数量大于这个袋子的需要拿出更多, 这个袋子也需要拿出,结果肯定大于这个袋子不拿出的)。
  2. 遍历每一种剩余的可能求最小结果。

代码实现

java实现

public class Solution {

    public long minimumRemoval(int[] beans) {
        // 袋子数量
        int length = beans.length;
        // 对每个袋子里的豆子数排序
        Arrays.sort(beans);
        // 记录总兜子数
        long total = 0;
        for (int bean: beans) {
            total += bean;
        }
        // min记录移除数量
        // 默认移除全部的豆子
        long min = total;
        int lastRest = 0;
        for (int i = 0; i < length; i++) {
            if (beans[i] == lastRest) continue;
            // beans[i]为剩余数量, length - i 表示有多少袋子数量大于剩余数量
            // 剩余数量 * 大于剩余数量的袋子数就是最终剩余多少豆子
            // current表示需要移除的豆子数
            long current = total - (long) beans[i] * (length - i);
            min = Math.min(min, current);
            lastRest = beans[i];
        }
        return min;
    }
}

c++实现

class Solution {
public:
    long long minimumRemoval(vector<int>& beans) {
        // 袋子数量
        int length = beans.size();
        // 对每个袋子里的豆子数排序
        sort(beans.begin(), beans.end());
        // 记录总兜子数
        long long total = 0;
        for (int bean : beans) {
            total += bean;
        }
        // min记录移除数量
        // 默认移除全部的豆子
        long long min = total;
        int lastRest = 0;
        for (int i = 0; i < length; i++) {
            if (beans[i] == lastRest) continue;
            // beans[i]为剩余数量, length - i 表示有多少袋子数量大于剩余数量
            // 剩余数量 * 大于剩余数量的袋子数就是最终剩余多少豆子
            // current表示需要移除的豆子数
            long long current = total - (long long)beans[i] * (length - i);
            min = min < current ? min : current;
            lastRest = beans[i];
        }
        return min;
    }
};

相关推荐

  1. 每日2171少数魔法

    2024-01-19 18:14:03       60 阅读
  2. 2024.1.18每日——少数魔法

    2024-01-19 18:14:03       63 阅读
  3. LeetCode 2171. 少数魔法

    2024-01-19 18:14:03       64 阅读
  4. LeetCode解法汇总2171. 少数魔法

    2024-01-19 18:14:03       50 阅读
  5. LeetCode 2171.少数魔法:排序 + 枚举

    2024-01-19 18:14:03       63 阅读
  6. 每日2397被列覆盖多行数

    2024-01-19 18:14:03       50 阅读
  7. 每日

    2024-01-19 18:14:03       38 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-19 18:14:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-19 18:14:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-19 18:14:03       82 阅读
  4. Python语言-面向对象

    2024-01-19 18:14:03       91 阅读

热门阅读

  1. leetcode—和为K的子数组

    2024-01-19 18:14:03       55 阅读
  2. 问题解决方案

    2024-01-19 18:14:03       59 阅读
  3. npm install 太慢?解决方法

    2024-01-19 18:14:03       60 阅读
  4. git merge 和 git pull的区别是什么

    2024-01-19 18:14:03       48 阅读
  5. Github Copilot 的使用方法和快捷键

    2024-01-19 18:14:03       71 阅读
  6. 公司OA办公系统使用阿里云服务器怎么选配置?

    2024-01-19 18:14:03       60 阅读
  7. Linux常用命令

    2024-01-19 18:14:03       47 阅读
  8. Spring Boot3 系列:Spring Boot3 跨域配置 Cors

    2024-01-19 18:14:03       35 阅读
  9. 《设计模式的艺术》笔记 - 享元模式

    2024-01-19 18:14:03       49 阅读
  10. C语言中各变量声明及注意事项

    2024-01-19 18:14:03       56 阅读
  11. pytorch学习(一)、tensorboard和torchvision

    2024-01-19 18:14:03       51 阅读