每日一题 2171. 拿出最少数目的魔法豆(中等)

发布时间:2024年01月18日

在这里插入图片描述

  1. 只有两种拿法,要么全拿光,剩下的要取到和最少魔法豆的袋子的数目相等,显然关键在于每个袋子的最少豆子数量是多少(少于这个数量的袋子是全拿出的)
  2. 想到了从小到大排序先把最少豆子的袋子认为是基线(最少数量),计算要拿几颗,然后再以下一个排好序的袋子为基线,再算要拿几颗,遍历完数组就可以得到答案了
class Solution:
    def minimumRemoval(self, beans: List[int]) -> int:
        beans.sort()
        n = len(beans)
        ans = [0] * n
        ans[0] = sum(beans) - n * beans[0]
        for i in range(1, n):
            ans[i] = ans[i - 1] + beans[i - 1] - (beans[i] - beans[i - 1]) * (n - i)
        return min(ans)
文章来源:https://blog.csdn.net/qq_46636391/article/details/135681469
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。