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

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++){//左边的需要全部置为0long 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;
}

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

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

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

相关文章

ImageMagick使用手册

ImageMagick使用手册 文章目录 ImageMagick使用手册ImageMagick是什么指令总结1.查看版本2.官网验证指令解读3.svg转png4.png转ico5.将指定文件夹中的所有PNG图像转换为ICO图标 本教程持续更新&#xff0c;我学到多少就更新多少。关于ffmpeg如何安装可以看上一篇博客win系统环境…

zk集群--启动阶段集群选举

1.概述 zk作为一个内存数据库产品&#xff0c;启动一个zk实例对外提供服务的方式成为单机模式。既然单机模式就可以实现请求处理&#xff0c;那为何要引入集群模式呢&#xff0c;引入集群模式付出了那些代价呢&#xff0c;相应的有取得了那些收益呢&#xff1f; 首先&#xf…

强化学习(四)动态规划——1

动态规划算法&#xff08;DP&#xff09;&#xff1a;在马尔可夫决策过程&#xff08;MDP&#xff09;的完美环境模型下计算最优策略。但其在强化学习中实用性有限&#xff0c;其一是它是基于环境模型已知&#xff1b;其二是它的计算成本很大。但它在理论伤仍然很重要&#xff…

【Unity】RayMarching体积云理论学习

RayMarching 体积云 RayMarching 是一种处理体积物体的方法 RayMarching 体积云的制作是基于屏幕后处理 屏幕空间重建世界坐标 目的是把屏幕坐标的每一个像素点转化成Unity世界坐标&#xff0c;可以得到射线的方向 如何在需要渲染的物体或者场景中使用RayMarching&#xff…

2023年12月青少年机器人技术等级考试(五级)理论综合试卷

2023年12月青少年机器人技术等级考试&#xff08;五级&#xff09;理论综合试卷 单选题 第 1 题 单选题 通常状况下&#xff0c;ESP32 WROOM模组的工作电压是&#xff1f;&#xff08; &#xff09; A.3V B.3.3V C.3.6V D.5V 第 2 题 单选题 ESP32 WROOM模组中核&am…

PHP AES加解密示例【详解】

PHP AES加解密示例 前言 在Web开发中&#xff0c;数据的安全性至关重要。AES&#xff08;Advanced Encryption Standard&#xff09;是一种常用的对称加密算法&#xff0c;用于保护敏感数据的安全性。本文将详细介绍在PHP中如何使用AES算法进行加解密操作&#xff0c;以确保数…

java大数据hadoop2.9.2 Linux安装mariadb和hive

一、安装mariadb 版本centos7 1、检查Linux服务器是否已安装mariadb yum list installed mariadb* 2、如果安装了&#xff0c;想要卸载 yum remove mariadb rm -rf /etc/my.cnf rm -rf /var/lib/mysql 才能完全删除 3、安装mariadb 在线网络安装 yum install -y mari…

Webpack5入门到原理17:Loader 原理

loader 概念 帮助 webpack 将不同类型的文件转换为 webpack 可识别的模块。 loader 执行顺序 分类 pre&#xff1a; 前置 loadernormal&#xff1a; 普通 loaderinline&#xff1a; 内联 loaderpost&#xff1a; 后置 loader 执行顺序 4 类 loader 的执行优级为&#xff…

【ARM 嵌入式 编译系列 2.6 -- GCC 编译时间统计参数 -ftime-report -Q 】

请阅读【嵌入式开发学习必备专栏 之 ARM GCC 编译专栏】 文章目录 GCC 编译时间统计 GCC 编译时间统计 如果你想要统计 GCC 编译过程中各个阶段的时间&#xff0c;可以使用 GCC 的 -ftime-report 选项。这个选项可以让编译器在编译结束后报告每个编译阶段所花费的时间。要使用…

Linux fsck命令教程:如何检查和修复你的文件系统(附实例详解和注意事项)

Linux fsck命令介绍 fsck&#xff0c;全称File System Consistency Check&#xff0c;主要用于检查和修复Linux文件系统的不一致和错误。该工具用于解决潜在的文件系统问题。fsck可以为你提供检查和修复一切文件系统中的问题的功能&#xff0c;包括一些潜在的磁盘错误等。 Li…

网络通信(Socket/TCP/UDP)

一、Socket 1.概念: Socket(又叫套接字)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接协议,客户端的IP地址,客户端的端口,服务器的IP地址,服务器的端口。 一个Socket是一对IP地址…

笔试面试题——二叉树进阶(一)

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、根据二叉树创建字符串1、题目讲解2、思路讲解3、代码实现 二、二叉树的分层遍历1、题目讲…

【C语言基础考研向】11 gets函数与puts函数及str系列字符串操作函数

1.gets函数与puts函数 gets函数类似于scanf函数&#xff0c;用于读取标准输入&#xff0e;前面我们已经知道scanf函数在读取字符串时遇到空格就认为读取结束&#xff0c;所以当输入的字符串存在空格时&#xff0c;我们需要使用gets 函数进行读取. gets函数的格式如下: char *…

大数据导论(4)---大数据应用

文章目录 1. 在互联网中的应用1.1 推荐系统1.2 长尾理论1.3 推荐方法与模型1.4 推荐系统应用 2. 在其他领域的应用2.1 企业营销2.2 智慧交通 1. 在互联网中的应用 1.1 推荐系统 1. 推荐系统产生&#xff1a;  (1) 互联网的飞速发展使我们进入了信息过载的时代&#xff0c;搜索…

【赠书第17期】Excel高效办公:文秘与行政办公(AI版)

文章目录 前言 1 了解Excel的强大功能和工具 2 提升Excel技能的方法 3 结合AI技术提升Excel应用 4 注意事项 5 推荐图书 6 粉丝福利 前言 随着人工智能&#xff08;AI&#xff09;技术的快速发展&#xff0c;我们的工作方式也在发生深刻变革。其中&#xff0c;Excel 作…

使用cmake进行完成开发实践

根据这个UML图进行cmake的实践 首先按照使用vscode在wsl2中配置clangd环境-CSDN博客的内容先创建出cmake项目。 之后在项目目录中创建include和src目录。 根据UML图&#xff0c;首先要完成Gun类的实现。分别在include&#xff0c;src目录下创建头文件和源文件&#xff0c;写入…

vue组件扩展

Vue中如何扩展一个组件 mixins、extends、slots、composition api 1、mixins 值可以是一个混合对象数组,混合实例可以包含选项,将在extend将相同的选项合并 mixins代码: var mixin{data:{mixinData:我是mixin的data},created:function(){console.log(这是mixin的created);},…

NAT44-ED features及节点图

VPP配置SNAT&#xff0c;内网接口GigabitEthernet2/0/0&#xff0c;外网接口GigabitEthernet3/0/0&#xff0c;NAT之后的地址为GigabitEthernet3/0/0接口的地址。 vpp# set interface state GigabitEthernet2/0/0 up vpp# set interface state GigabitEthernet3/0/0 up vpp# v…

上位机图像处理和嵌入式模块部署(qt图像处理)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 很多人一想到图像处理&#xff0c;本能的第一反应就是opencv&#xff0c;这也没有错。但是呢&#xff0c;这里面还是有一个问题的&#xff0c;不知…

Leetcode刷题笔记题解(C++):LCR 174. 寻找二叉搜索树中的目标节点

思路&#xff1a;二叉搜索树的中序遍历是有序的从大到小的&#xff0c;故得出中序遍历的结果&#xff0c;即要第cnt大的数为倒数第cnt的数 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeN…