LeetCode 2171.拿出最少数目的魔法豆:排序 + 枚举

【LetMeFly】2171.拿出最少数目的魔法豆:排序 + 枚举

力扣题目链接:https://leetcode.cn/problems/removing-minimum-number-of-magic-beans/

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

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

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

 

示例 1:

输入: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 个魔法豆更少的方案。

示例 2:

输入: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 个魔法豆更少的方案。

 

提示:

  • 1 <= beans.length <= 105
  • 1 <= beans[i] <= 105

方法一:排序 + 枚举

二话不说先将豆子数量从小到大排个序。

统计一下一共有多少个豆子(即为all)。

遍历每个袋子中豆子的数量(假设当前豆子数量为bean),计算将小于bean的袋子移空、大于等于bean的袋子移为bean所需移除的豆子总数。

返回所有总数中的最小值即为答案。

  • 时间复杂度 O ( l e n ( b e a n s ) ) O(len(beans)) O(len(beans))
  • 空间复杂度 O ( l e n ( b e a n s ) ) O(len(beans)) O(len(beans))

AC代码

C++
class Solution {
public:long long minimumRemoval(vector<int>& beans) {sort(beans.begin(), beans.end());long long all = accumulate(beans.begin(), beans.end(), 0LL);long long ans = all;for (int i = 0; i < beans.size(); i++) {ans = min(ans, all - ((long long)beans.size() - i) * beans[i]);}return ans;}
};
Python
# from typing import Listclass Solution:def minimumRemoval(self, beans: List[int]) -> int:beans.sort()all_ = sum(beans)ans = all_for i, thisBean in enumerate(beans):ans = min(ans, all_ - thisBean * (len(beans) - i))return ans

同步发文于CSDN,原创不易,转载经作者同意后请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/135682601

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/631993.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Security 6.x 系列【69】扩展篇之认证技术

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.1.0 本系列Spring Security 版本 6.1.0 源码地址:https://gitee.com/pearl-organization/study-spring-security-demo 文章目录 1. 信息安全技术2. 认证技术2.1 概述2.2 认证依据2.3 认证原理2.4 认证类型…

npm超详细安装(包括配置环境变量)!!!npm安装教程(node.js安装教程)

安装node.js:(建议选择相对低一点的版本&#xff0c;相对稳定)​下载完成直接点击next即可(安装过程中会直接添加path的系统变量&#xff0c;变量值是自己的安装路径&#xff0c;可自行选择&#xff0c;比如&#xff1a;D:\software\)​安装完成:winR打开电脑控制台&#xff0c…

c语言案例双色球

系列文章目录 c语言案例双色球 c语言案例双色球 系列文章目录c语言案例双色球 c语言案例双色球 int main() {srand((unsigned int)time(NULL));//双色球两种原色 红球蓝球&#xff08;61&#xff09;红球1-33 蓝球1-16 打印双色球中奖信息//红色球不能重复 int ball[6];//红球f…

四元数的理解

一 四元数的可视化 一共三个虚维度来描述空间&#xff0c;实数则在第四个维度&#xff0c;垂直于全部三个虚数轴 四元数可以优雅的描述并计算三维旋转 “四维右手法则” 1.一维到二维&#xff08;直线人小莱&#xff09; 两个复数Z和W相乘&#xff0c;把z当成一个函数&…

Bitcoin的Covenants——合同化管理UTXO的花费方式

1. 引言 最近几个月&#xff08;2023年4月前后&#xff09;&#xff0c;随着Ordinal、Tarproot、染色币等技术被众多开发者深入挖掘&#xff0c;比特币生态诞生出一系列的协议产品&#xff0c;最出名的就是BRC20&#xff0c;各种搞NFT和同质化代币。 币圈的技术栈&#xff0c…

前端关于学习方式,解决问题的面试题(本人真实面试题)

本文旨在为大家平时面试解答提供思路 和 介绍平时学习&#xff0c;解决问题的方法。 1、如何解决Echarts难使用的问题 深入学习文档&#xff1a; ECharts 的官方文档是非常详细和全面的。仔细阅读文档&#xff0c;深入理解配置项和 API&#xff0c;可以帮助你更好地使用 EChart…

解决springboot启动报Failed to start bean ‘subProtocolWebSocketHandler‘;

解决springboot启动报 Failed to start bean subProtocolWebSocketHandler; nested exception is java.lang.IllegalArgumentException: No handlers 问题发现问题解决 问题发现 使用springboot整合websocket&#xff0c;启动时报错&#xff0c;示例代码&#xff1a; EnableW…

基于SSM的家政公司服务平台的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue、HTML 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是…

以某轧钢厂为例浅谈电能管理系统

摘要&#xff1a;结合某轧钢厂的现状和电能管理软件的优势应用&#xff0c;在节能降耗方面利用电能管理软件对轧钢厂电能损耗进行实时监控&#xff0c;为实现能源优化配置和节能降耗管理提供了大量数据&#xff0c;从而为大型能耗企业的节能降耗实施奠定了基础。 关键词&#x…

vue3使用vue-masonry插件实现瀑布流

《Vue插件》瀑布流插件vue-masonry的使用与踩坑记录 参数:item-selector transition-duration column-width origin-left origin-top gutter 前言: 之前其实有分享过一篇纯CSS实现瀑布流的方法: https://oliver.blog.csdn.net/article/details/126450691&#xff0c;但纯CSS实现…

C //练习 6-4 编写一个程序,根据单词的出现频率按降序打印输入的各个不同单词,并在每个单词的前面标上它的出现次数。

C程序设计语言 &#xff08;第二版&#xff09; 练习 6-4 练习 6-4 编写一个程序&#xff0c;根据单词的出现频率按降序打印输入的各个不同单词&#xff0c;并在每个单词的前面标上它的出现次数。 注意&#xff1a;代码在win32控制台运行&#xff0c;在不同的IDE环境下&#…

vivado RTL运行方法检查、分析方法报告、报告DRC

运行方法检查 Vivado Design Suite提供基于超快设计的自动化方法检查使用“报告方法论”命令的FPGA和SoC&#xff08;UG949&#xff09;方法论指南。您可以生成关于打开、详细阐述、综合或实现的方法论报告设计对于详细设计&#xff0c;方法报告会检查XDC和RTL文件。对于有关使…

阿里云国外云服务器多少钱?2024年最新价格

阿里云国外服务器优惠活动「全球云服务器精选特惠」&#xff0c;国外服务器租用价格24元一个月起&#xff0c;免备案适合搭建网站&#xff0c;部署独立站等业务场景&#xff0c;阿里云服务器网aliyunfuwuqi.com分享阿里云国外服务器优惠活动&#xff1a; 全球云服务器精选特惠…

odoo 一日一技 系统参数 config_parameter

# 基础介绍 在Odoo中&#xff0c;ir.config_parameter是一个特殊的模型&#xff0c;它用于存储全局配置参数。这些参数是全局的&#xff0c;可以在任何地方访问&#xff0c;而且它们的值在数据库中是持久化的。 你可以使用config_parameter模型来存储各种配置数据&#xff0c;…

汇编指令retn和retn x的区别

在32位汇编语言中&#xff0c;retn 和 retn 16 指令用于从子过程&#xff08;或函数&#xff09;返回&#xff0c;但它们之间有一些区别。 retn&#xff1a; retn 指令没有附加的立即数参数。当执行 retn 指令时&#xff0c;控制权返回到调用该过程的地址&#xff0c;但不会对…

Web Animation API

工作中经常会遇到需要动画的场景&#xff0c;连贯动画都是用CSS实现&#xff0c;&#xff0c;但是如果遇到需要用户互动介入的动画&#xff0c;那纯CSS很比较吃力&#xff0c;也不是不能实现&#xff0c;需要动态修改CSS变量&#xff0c;而且动画容易被JS代码阻塞&#xff0c;导…

XSS漏洞:xss.haozi.me靶场通关

xss系列往期文章&#xff1a; 初识XSS漏洞-CSDN博客 利用XSS漏洞打cookie-CSDN博客 XSS漏洞&#xff1a;xss-labs靶场通关-CSDN博客 XSS漏洞&#xff1a;prompt.mi靶场通关-CSDN博客 目录 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C…

【C++干货铺】红黑树 (Red Black Tree)

个人主页点击直达&#xff1a;小白不是程序媛 C系列专栏&#xff1a;C干货铺 代码仓库&#xff1a;Gitee 目录 前言 红黑树的概念 红黑树的性质 红黑树结点的定义 红黑树的插入操作 插入新的结点 检查规则进行改色 情况一 情况二 情况三 插入完整代码 红黑树的验…

母线温度预测业务需求设计

1、需求背景 需求对象&#xff1a;设备使用方、设备维修人员 使用场景&#xff1a;使用方需要对母线温度进行实时监测和预警&#xff0c;及时排除安全隐患&#xff0c;保证长期正常运行。 使用目的&#xff1a;准确预测母线的未来温度&#xff0c;对于可能存在的隐患提前预警…

OpenCV-Python(43):姿势估计

目标 学习了解calib3D 模块学习在图像中创建3D效果 calib3D模块 OpenCV-Python的calib3D模块是OpenCV库中的一个重要模块&#xff0c;用于摄像头标定和三维重建等计算机视觉任务。该模块提供了一些函数和类&#xff0c;用于摄像头标定、立体视觉和三维重建等方面的操作。 下…