【算法题】1887. 使数组元素相等的减少操作次数
插: 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
坚持不懈,越努力越幸运,大家一起学习鸭~~~
题目:
给你一个整数数组 nums ,你的目标是令 nums 中的所有元素相等。完成一次减少操作需要遵照下面的几个步骤:
找出 nums 中的 最大 值。记这个值为 largest 并取其下标 i (下标从 0 开始计数)。如果有多个元素都是最大值,则取最小的 i 。
找出 nums 中的 下一个最大 值,这个值 严格小于 largest ,记为 nextLargest 。
将 nums[i] 减少到 nextLargest 。
返回使 nums 中的所有元素相等的操作次数。
示例 1:
输入:nums = [5,1,3]
输出:3
解释:需要 3 次操作使 nums 中的所有元素相等:
- largest = 5 下标为 0 。nextLargest = 3 。将 nums[0] 减少到 3 。nums = [3,1,3] 。
- largest = 3 下标为 0 。nextLargest = 1 。将 nums[0] 减少到 1 。nums = [1,1,3] 。
- largest = 3 下标为 2 。nextLargest = 1 。将 nums[2] 减少到 1 。nums = [1,1,1] 。
示例 2:
输入:nums = [1,1,1]
输出:0
解释:nums 中的所有元素已经是相等的。
示例 3:
输入:nums = [1,1,2,2,3]
输出:4
解释:需要 4 次操作使 nums 中的所有元素相等:
- largest = 3 下标为 4 。nextLargest = 2 。将 nums[4] 减少到 2 。nums = [1,1,2,2,2] 。
- largest = 2 下标为 2 。nextLargest = 1 。将 nums[2] 减少到 1 。nums = [1,1,1,2,2] 。
- largest = 2 下标为 3 。nextLargest = 1 。将 nums[3] 减少到 1 。nums = [1,1,1,1,2] 。
- largest = 2 下标为 4 。nextLargest = 1 。将 nums[4] 减少到 1 。nums = [1,1,1,1,1] 。
提示:
1 <= nums.length <= 5 * 10^4
1 <= nums[i] <= 5 * 10^4
java代码:
class Solution {public int reductionOperations(int[] nums) {int[] hash = new int[50001];int min = Integer.MAX_VALUE;for (int i = 0; i < nums.length; i++) {hash[nums[i]]++;min = Math.min(min, nums[i]);}int ans = 0, sum = 0;for (int i = hash.length - 1; i >= 0; i--) {if (hash[i] != 0 && i != min) {sum += hash[i];ans += sum;}}return ans;}
}相关文章:
【算法题】1887. 使数组元素相等的减少操作次数
插: 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 坚持不懈,越努力越幸运,大家一起学习鸭~~~ 题目: 给你一个整数数组 nums ࿰…...
GD库图片裁剪指定形状解决办法(PHP GD库 海报)
需求描述:需要把图片裁剪成一个指定的平行四边形,目的是使用GD库,把裁剪后的图片放在底图上面,使最终合成的图片看起来是一个底图平行四边形的样子提示:可以结合本作者的其他文章,来生成一个定制化的海报&a…...
redis的简介及应用场景
1、基本信息 Redis英文官网介绍: Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queri…...
2、HAL库利用滴答定时器systick(1ms中断)实现时间计数戳
文档说明:通过滴答定时器的1ms中断实现时间计数,标记需要的时间标志,在主函数中查询标志,避免延时函数消耗CPU 1、HAL库systick定时器说明 在CubeMx生成的代码main()函数首先执行的函数为HAL_Init();里面会进行滴答定时器初始化…...
Spring入门学习
Spring入门学习 文章目录Spring入门学习Spring概述Spring FrameworkIOCIOC容器DIIOC容器的实现类①FileSystemXmlApplicationContext②ClassPathXmlApplicationContext基于XML管理bean入门案例创建类创建xml在Spring配置文件中配置bean测试Spring概述 Spring 是最受欢迎的企业级…...
webpack(4版本)使用
webpack简介:webpack 是一种前端资源构建工具,一个静态模块打包器(module bundler)。在 webpack 看来, 前端的所有资源文件(js/json/css/img/less/...)都会作为模块处理。它将根据模块的依赖关系进行静态分析,打包生成对应的静态资源(bundle)…...
Linux安装ElasticSearch
下载地址:https://www.elastic.co/cn/downloads/past-releases#elasticsearch 1 版本选择 ElasticSearch 7 及以上版本都是自带的 jdk,假如需要配置指定的 jdk 版本的话,可以在 es 的 bin 目录下找到elasticsearch-env.bat 这个文件&#x…...
Linux中C语言编程经验总结
修改记录 版本号日期更改理由V1.02022-03-15MD化 总则 仅总结一些常用且实用的编程规范和技巧,且避免记忆负担,聚焦影响比较大的20% ! 编译器 打开全warning编译器开关 正例 gcc -W -Wall -g -o someProc main.c反例 gcc -g -o someProc main…...
jvisualvm工具使用
jdk自带的工具jvisualvm,可以分析java内存使用情况,jvm相关的信息。 1、设置jvm启动参数 设置jvm参数**-Xms20m -Xmx20m -XX:PrintGCDetails** 最小和最大堆内存,打印gc详情 2、测试代码 TestScheduleClassGc package com.core.schedule;…...
redis五大IO网络模型、内存回收
目录1.0用户空间和内核态空间1.1 网络模型-阻塞IO1.2 网络模型-非阻塞IO1.3 网络模型-IO多路复用1.3.1 网络模型-IO多路复用-select方式1.3.2 网络模型-IO多路复用模型-poll模式1.3.3 网络模型-IO多路复用模型-epoll函数1.3.4 网络模型-epoll中的ET和LT1.3.5 网络模型-基于epol…...
【C/C++】内存管理详解
目录内存布局思维导图1.C/C内存分布数据段:栈:代码段:堆:2.C语言中动态内存管理方式3.C内存管理方式3.1new/delete操作内置类型3.2new和delete操作自定义类型4.operator new 与 operator delete函数5.new和delete的实现原理5.1内置类型5.2自定…...
Android ProcessLifecycleOwner 观察进程生命周期
文章目录简介使用依赖用法1,结合 LiveData用法2,获取 owner的 lifecycle 实例,并对 lifecycle 添加观察者简介 ProcessLifecycleOwner 直译,就是,进程生命周期所有者。 通过 DOC 注释了解到: Lifecycle.E…...
如何编写一个 npm 插件?
提到写 npm 插件,很多没搞过的可能第一感觉觉得很难,无从下手,其实不然。 我们甚至写个简单的 console.log(hello word),都是可以当成一个插件发布上去的。 其实无从下手的主要难点还是在于你的具体要做的功能逻辑,这…...
mapstruct- 让VO,DTO,ENTITY转换更加便捷
mapstruct- 让VO,DTO,ENTITY转换更加便捷 1. 简介 MapStruct是一个代码生成器,简化了不同的Java Bean之间映射的处理,所谓映射指的就是从一个实体变化成一个实体。例如我们在实际开发中,DAO层的实体和一些数据传输对…...
IAR警告抑制及还原
工作中需要临时抑制 警告 Pa084,源代码如下: sy_errno_t sy_memset_s(void *dest, sy_rsize_t dmax, int value, sy_rsize_t n) { sy_errno_t err; if (dest NULL) { return SY_ESNULLP; } if (dmax > SY_RSIZE…...
工厂模式(Factory Pattern)
1.什么是工厂模式 定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。 2.工厂模式的作用 实现创建者和调用者的分离 3.工厂模式的分类 简单工厂模式工厂方法模式抽象工厂模式 4.工厂模式的优缺点 优…...
JavaScript语法学习--《JavaScript编程全解》
《JavaScript编程全解》 JavaScript琐碎基础 0.前言 1.RN: react native是Facebook于2015年4月开源的跨平台移动应用开发框架,是Facebook早先开源的JS框架 React 在原生移动应用平台的衍生产物,支持iOS和安卓两大平台。 2.ts与js js:是弱…...
linux安装极狐gitlab
1. 官网寻找安装方式 不管我们使用任何软件,最靠谱的方式就是查看官方文档。gitlab提供了相应的安装文档,并且有对应的中文文档。地址如下: https://gitlab.cn/install/ 我在这里以CentOS作为安装示例,大家可根据自己的需要选择…...
软考高级信息系统项目管理(高项)原创论文——人力资源管理
人力资源管理 某市某国有装备制造公司智能安防信息管控平台项目是在公司推进企业信息化进程和实现企业可持续发展的背景下于2016年8月提出来的,我公司积极应标并最终顺利中标,而我有幸被任命为项目经理,担任起该项目的管理工作。该项目投资金额为530万元,其中软件部分为360…...
Java Lambda表达式 匿名内部类 函数式接口(FunctionalInterface)
Java Lambda表达式定义背景示例匿名类实现Lambda表达式实现对比匿名类和Lambda实现Lambda表达式(调用)说明Lambda表达式的语法Java 1.8 新特性:函数式接口jdk 1.8 自带的函数式接口 (举例)定义 参考Oracle官网&#x…...
施密特触发器除了整形还能干啥?聊聊它在Arduino按键消抖和信号调理里的妙用
施密特触发器在Arduino中的高阶应用:从按键消抖到信号调理的实战指南 当你在调试Arduino项目时,是否遇到过按键响应不稳定、传感器读数跳变的问题?这些看似简单的硬件问题,往往会让开发者花费大量时间在软件滤波上。实际上&#x…...
别再只盯着蓝牙和ZigBee了!用Telink TLSR8258芯片的2.4G私有协议,自己动手做个低功耗遥控器
从零构建2.4G私有协议遥控器:Telink TLSR8258实战指南 当市面上大多数IoT设备还在蓝牙和ZigBee的框架下挣扎时,Telink TLSR8258芯片的2.4G私有协议正在悄然改写低功耗无线通信的规则。我曾在一个智能农业项目中,需要控制200米外的灌溉阀门&am…...
百川2-13B模型中文OCR增强:OpenClaw图片信息提取优化
百川2-13B模型中文OCR增强:OpenClaw图片信息提取优化 1. 为什么需要OCR增强的智能体 上个月在处理一份电子合同时,我遇到了一个典型问题:合同是扫描件图片格式,我需要从中提取关键条款、金额和日期等信息。手动录入不仅耗时&…...
技术经理必修管理知识:从管理到领导——高阶技术管理者的自我修养
08-技术经理必修管理知识:从管理到领导——高阶技术管理者的自我修养管理者正确地做事,领导者做正确的事。管理的终点是效率,领导的起点是方向。当你开始思考"我们该往哪里走"而不是"我们该怎么走快一点",你就…...
大鼠抗小鼠CD193抗体如何揭示CCL24-CCR3轴在心肌纤维化中的作用?
一、心脏巨噬细胞如何参与心肌纤维化进程?心肌纤维化是多种心脏疾病进展至心力衰竭的关键病理环节,其特征是心脏成纤维细胞过度活化并分泌大量细胞外基质蛋白,导致心肌僵硬与功能障碍。心脏组织中存在大量常驻巨噬细胞,它们在维持…...
TI-92 Plus计算器超频改造与硬件分析
1. TI-92 Plus图形计算器硬件分析与超频改造1.1 设备概述与历史背景TI-92 Plus是德州仪器(Texas Instruments)于1999年推出的图形计算器产品,采用摩托罗拉68K系列MC68SEC000处理器作为核心运算单元。该设备采用QWERTY全键盘设计,配备大尺寸LCD显示屏&…...
OpenClaw对话增强:Qwen3-32B长上下文记忆功能配置指南
OpenClaw对话增强:Qwen3-32B长上下文记忆功能配置指南 1. 为什么需要长上下文记忆 上周我在调试一个自动化周报生成任务时,遇到了一个典型问题:OpenClaw在连续对话中总是"忘记"前几轮的关键信息。比如当我先要求"提取本周所…...
终极指南:如何用SilentPatch彻底修复你的经典GTA游戏
终极指南:如何用SilentPatch彻底修复你的经典GTA游戏 【免费下载链接】SilentPatch SilentPatch for GTA III, Vice City, and San Andreas 项目地址: https://gitcode.com/gh_mirrors/si/SilentPatch 还在为经典GTA游戏的各种bug和兼容性问题烦恼吗…...
深入解析W25Q64:SPI接口下的高效存储解决方案
1. W25Q64闪存芯片初探:为什么它成为嵌入式开发的首选? 第一次接触W25Q64是在五年前的一个智能家居项目里,当时需要存储大量设备配置和日志数据。这个指甲盖大小的芯片让我印象深刻——它不仅容量达到8MB,还能在断电后完整保存数据…...
终极指南:如何在Rust中构建高性能物理仿真世界
终极指南:如何在Rust中构建高性能物理仿真世界 【免费下载链接】rapier 2D and 3D physics engines focused on performance. 项目地址: https://gitcode.com/gh_mirrors/ra/rapier Rapier物理引擎是专为Rust语言设计的高性能2D和3D物理仿真解决方案…...
