2024.1.18力扣每日一题——拿出最少数目的魔法豆

题目来源

力扣每日一题;题序:2171

我的题解

方法一 排序+前缀和

结果与原始顺序无关,因此先进行排序,然后计算前缀和。
有官方题解证明:最终在 拿出最少数目的魔法豆 的前提下,一定是以某个袋子中豆子数为保留值的。因此,以每个袋子作为保留值进行遍历查找最优。

时间复杂度:O(n)
空间复杂度:O(n)

public long minimumRemoval(int[] beans) {
   
    Arrays.sort(beans);
    int n=beans.length;
    long[] preSum=new long[n+1];
    for(int i=0;i<n;i++){
   
        preSum[i+1]=preSum[i]+beans[i];
    }
    long res=Long.MAX_VALUE;
    for(int i=0;i<n;i++){
   
        //左边的需要全部置为0
        long left=preSum[i];
        //右边是   总和-左边的值-当前值*(n-i)  当前值*(n-i)表示右侧都变为beans[i]后最终保留的元素和
        long right=preSum[n]-preSum[i]-(1l*beans[i]*(n-i));
        //比较大小
        res=Math.min(res,left+right);
    }
    
    return res;
}
方法二 优化版本

根据方法一中的求解来看,left+right后与preSum[i]无关,只与preSum[n]有关,因此可以只求总和,不在计算前缀和。

时间复杂度:O(n)
空间复杂度:O(1)

public long minimumRemoval(int[] beans) {
   
    Arrays.sort(beans);
    int n=beans.length;
    long sum=Arrays.stream(beans).asLongStream().sum();
    long res=Long.MAX_VALUE;
    for(int i=0;i<n;i++){
   
        //比较大小
        res=Math.min(res,sum-(1l*beans[i]*(n-i)));
    }
    return res;
}

有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈😄~

相关推荐

  1. 每日2171少数魔法

    2024-01-22 23:24:02       59 阅读
  2. 2024.1.18每日——少数魔法

    2024-01-22 23:24:02       63 阅读
  3. LeetCode 2171. 少数魔法

    2024-01-22 23:24:02       64 阅读
  4. LeetCode解法汇总2171. 少数魔法

    2024-01-22 23:24:02       50 阅读
  5. LeetCode 2171.少数魔法:排序 + 枚举

    2024-01-22 23:24:02       62 阅读
  6. 每日2397被列覆盖多行数

    2024-01-22 23:24:02       50 阅读

最近更新

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

    2024-01-22 23:24:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-22 23:24:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-22 23:24:02       82 阅读
  4. Python语言-面向对象

    2024-01-22 23:24:02       91 阅读

热门阅读

  1. 前端笔试题(九)——请使用jQuery实现Ajax请求

    2024-01-22 23:24:02       49 阅读
  2. day13打卡

    2024-01-22 23:24:02       61 阅读
  3. String 字符串类和编码 以及StringBuilder StringBuffer

    2024-01-22 23:24:02       47 阅读
  4. 猫咪与Git 解决git clone 443问题

    2024-01-22 23:24:02       53 阅读
  5. Leetcode 3012. Minimize Length of Array Using Operations

    2024-01-22 23:24:02       61 阅读
  6. PG DBA培训23:PostgreSQL执行计划与统计信息

    2024-01-22 23:24:02       53 阅读
  7. 前端开发领域的细分领域与特点

    2024-01-22 23:24:02       55 阅读
  8. 转 义 字 符

    2024-01-22 23:24:02       49 阅读
  9. Vue与React:核心异同点解析

    2024-01-22 23:24:02       52 阅读
  10. LeetCode 每日一题 Day 46 ||枚举

    2024-01-22 23:24:02       52 阅读
  11. k8s-pvc/pv扩容记录

    2024-01-22 23:24:02       44 阅读
  12. 电话号码的字母组合-算法

    2024-01-22 23:24:02       46 阅读