当前位置: 首页 > article >正文

LeetCode 2602. 使数组元素全部相等的最少操作次数【排序,前缀和,二分】中等

本文属于「征服LeetCode」系列文章之一这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁本系列将至少持续到刷完所有无锁题之日为止由于LeetCode还在不断地创建新题本系列的终止日期可能是永远。在这一系列刷题文章中我不仅会讲解多种解题思路及其优化还会用多种编程语言实现题解涉及到通用解法时更将归纳总结出相应的算法模板。为了方便在PC上运行调试、分享代码文件我还建立了相关的仓库https://github.com/memcpy0/LeetCode-Conquest。在这一仓库中你不仅可以看到LeetCode原题链接、题解代码、题解文章链接、同类题目归纳、通用解法总结等还可以看到原题出现频率和相关企业等重要信息。如果有其他优选题解还可以一同分享给他人。由于本系列文章的内容随时可能发生更新变动欢迎关注和收藏征服LeetCode系列文章目录一文以作备忘。给你一个正整数数组nums。同时给你一个长度为m的整数数组queries。第i个查询中你需要将nums中所有元素变成queries[i]。你可以执行以下操作任意次将数组里一个元素增大或者减小1。请你返回一个长度为m的数组answer其中answer[i]是将nums中所有元素变成queries[i]的最少操作次数。注意每次查询后数组变回最开始的值。示例 1输入nums[3,1,6,8],queries[1,5]输出[14,10]解释第一个查询我们可以执行以下操作-将 nums[0]减小2次nums[1,1,6,8]。-将 nums[2]减小5次nums[1,1,1,8]。-将 nums[3]减小7次nums[1,1,1,1]。 第一个查询的总操作次数为25714。 第二个查询我们可以执行以下操作-将 nums[0]增大2次nums[5,1,6,8]。-将 nums[1]增大4次nums[5,5,6,8]。-将 nums[2]减小1次nums[5,5,5,8]。-将 nums[3]减小3次nums[5,5,5,5]。 第二个查询的总操作次数为241310。示例 2输入nums[2,9,6,3],queries[10]输出[20]解释我们可以将数组中所有元素都增大到10总操作次数为814720。提示n nums.lengthm queries.length1 n, m 10^51 nums[i], queries[i] 10^9方法 排序前缀和二分classSolution{publicListLongminOperations(int[]nums,int[]queries){Arrays.sort(nums);intnnums.length;long[]sumnewlong[n1];// 前缀和for(inti0;in;i){sum[i1]sum[i]nums[i];}ListLongansnewArrayList(queries.length);// 预分配空间for(intq:queries){intjlowerBound(nums,q);longleft(long)q*j-sum[j];// 蓝色面积longrightsum[n]-sum[j]-(long)q*(n-j);// 绿色面积ans.add(leftright);}returnans;}// 见 https://www.bilibili.com/video/BV1AP41137w7/privateintlowerBound(int[]nums,inttarget){intleft-1;intrightnums.length;// 开区间 (left, right)while(left1right){// 区间不为空// 循环不变量// nums[left] target// nums[right] targetintmidleft(right-left)/2;if(nums[mid]target){leftmid;// 范围缩小到 (mid, right)}else{rightmid;// 范围缩小到 (left, mid)}}returnright;}}classSolution{public:vectorlonglongminOperations(vectorintnums,vectorintqueries){ranges::sort(nums);intnnums.size();vectorlonglongsum(n1);// 前缀和for(inti0;in;i){sum[i1]sum[i]nums[i];}intmqueries.size();vectorlonglongans(m);for(inti0;im;i){intqqueries[i];longlongjranges::lower_bound(nums,q)-nums.begin();longlongleftq*j-sum[j];// 蓝色面积longlongrightsum[n]-sum[j]-q*(n-j);// 绿色面积ans[i]leftright;}returnans;}};classSolution:defminOperations(self,nums:List[int],queries:List[int])-List[int]:nlen(nums)nums.sort()slist(accumulate(nums,initial0))# 前缀和ans[]forqinqueries:jbisect_left(nums,q)leftq*j-s[j]# 蓝色面积rights[n]-s[j]-q*(n-j)# 绿色面积ans.append(leftright)returnansfuncminOperations(nums,queries[]int)[]int64{n:len(nums)slices.Sort(nums)sum:make([]int,n1)// 前缀和fori,x:rangenums{sum[i1]sum[i]x}ans:make([]int64,len(queries))fori,q:rangequeries{j:sort.SearchInts(nums,q)left:q*j-sum[j]// 蓝色面积right:sum[n]-sum[j]-q*(n-j)// 绿色面积ans[i]int64(leftright)}returnans}复杂度分析时间复杂度O ( ( n q ) l o g n ) O((nq)logn)O((nq)logn)其中n nn为n u m s numsnums的长度q qq为q u e r i e s queriesqueries的长度。空间复杂度O ( n ) O(n)O(n)。返回值不计入。

相关文章:

LeetCode 2602. 使数组元素全部相等的最少操作次数【排序,前缀和,二分】中等

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…...

C++26反射在高频交易系统中的灰度实践(零停机元数据热重载技术首曝)

第一章:C26反射在高频交易系统中的灰度实践(零停机元数据热重载技术首曝) C26 标准草案中引入的 std::reflect 机制,首次为 C 带来编译期可查询、运行期可遍历的结构化类型元数据能力。在毫秒级延迟敏感的高频交易系统中&#xff…...

假冒视频会议软件“Meeten“正大规模窃取Web3从业者加密货币

攻击概述 网络犯罪分子正利用欺诈性视频会议平台感染Windows和Mac电脑,通过虚假的商务会议专门针对Web3行业从业者,以窃取加密货币资产。 这一恶意活动根据假冒会议软件的常用名称被称为 "Meeten",自2024年9月以来持续活跃。该恶…...

15门免费深度学习课程全解析:从入门到实战

1. 深度学习入门指南:15门免费在线课程全解析深度学习作为人工智能的核心技术,正在重塑各行各业的智能化进程。但很多初学者常常陷入"从何学起"的困境——市面上的付费课程动辄上千元,而免费资源又鱼龙混杂。我花了三个月时间系统测…...

基础算法——区间合并

题目给定n个区间[li,ri],要求合并所有有交集的区间。注意如果在端点处相交,也算有交集。输出合并完成后的区间个数。例如:[1,3]和[2,6]可以合并为一个区间[1,6]。输入格式第一行包含整数n。接下来n行,每行包含两个整数l和r。输出格…...

编码器-解码器模型中的注意力机制原理与应用

1. 编码器-解码器模型中的注意力机制解析在自然语言处理领域,编码器-解码器(Encoder-Decoder)架构是处理序列到序列(seq2seq)任务的经典框架。这个架构最初由两篇开创性论文提出:Ilya Sutskever等人的《Seq…...

WinUtil架构解析:模块化Windows系统管理框架的技术实现

WinUtil架构解析:模块化Windows系统管理框架的技术实现 【免费下载链接】winutil Chris Titus Techs Windows Utility - Install Programs, Tweaks, Fixes, and Updates 项目地址: https://gitcode.com/GitHub_Trending/wi/winutil 项目定位与技术背景 在Wi…...

ContextMenuManager:轻松掌控Windows右键菜单,打造个性化操作体验

ContextMenuManager:轻松掌控Windows右键菜单,打造个性化操作体验 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 你是否曾经因为Windows…...

一招教你免费将DeepSeek、Qwen、Kimi、GLM、mimo等主流ai大模型网页转换成本地api任意调用 彻底实现token自由!

一招教你免费将DeepSeek、Qwen、Kimi、GLM、mimo等主流ai大模型网页转换成本地api任意调用 彻底实现token自由! 关键词:Chat2API教程、DeepSeek本地调用、Qwen本地API、OpenAI兼容接口、本地AI代理、多模型统一管理 名称链接Chat2API客户端 下载https://dooo.fun/a…...

2026获取微信小程序和小游戏AppID和Path教程(寻道大千刷邀请必备) 快速拿到用户id

2026获取微信小程序和小游戏AppID和Path教程(寻道大千刷邀请必备) 快速拿到用户id 关键词: 微信小程序AppID获取、微信小程序Path路径获取、小程序跳转参数、小程序自动化、小程序页面路径查询 标签: 微信小程序、AppID、Path路径、获取方法前言前段时间…...

Sunshine游戏串流终极指南:如何5分钟搭建跨设备游戏共享平台

Sunshine游戏串流终极指南:如何5分钟搭建跨设备游戏共享平台 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine是一款开源的自托管游戏串流服务器,专…...

大语言模型输出优化与参数调优实战指南

1. 大语言模型输出优化指南 作为一名长期从事自然语言处理的技术从业者,我见证了大型语言模型(LLMs)从实验室走向产业应用的完整历程。这些模型确实改变了我们与技术交互的方式,但要让它们发挥最佳性能,需要掌握一些关键技巧。 LLMs本质上是…...

从AUTOSAR工程师视角看TDA4:那些官方SDK没告诉你的多核软件架构“坑”与实战调优

从AUTOSAR工程师视角看TDA4:多核软件架构的实战调优与避坑指南 当第一次拿到TDA4开发板时,我和团队都对这个号称"L2自动驾驶神器"的多核异构芯片充满期待。TI官方文档里那些华丽的性能参数——8TOPS算力、Cortex-A72R5FDSP的异构组合、高度集…...

知识点原子化拆解与专业讲解技能knowledge-explainer

Knowledge Explainer(SkillHub) Knowledge Explainer(ClawHub) name: knowledge-explainer author: 王教成 Wang Jiaocheng (波动几何) description: >- 知识点原子化拆解与专业讲解技能。将任意知识点拆解为不可再分的原子概念…...

【黑马点评日记】高并发秒杀:库存超卖与锁机制解析

🔥个人主页:北极的代码(欢迎来访) 🎬作者简介:java后端学习者 ❄️个人专栏:苍穹外卖日记,SSM框架深入,JavaWeb ✨命运的结局尽可永在,不屈的挑战却不可须臾或…...

永远不要让 Web 服务器以 root 运行。使用专用目录并限制权限。

它的本质是:通过身份隔离和文件系统沙箱,将 Web 应用可能遭受的攻击后果限制在“局部受损”,而非“系统崩溃”。如果 Web 服务器以 root 运行,任何代码漏洞(如文件上传、命令注入、反序列化)都将直接转化为…...

还在手写valgrind脚本?2026智能插件自动注入ASan/CFI/UBSan——3分钟完成企业级部署!

https://intelliparadigm.com 第一章:现代 C 语言内存安全编码规范 2026 插件下载与安装 插件获取渠道 现代 C 语言内存安全编码规范 2026(简称 MSC-2026)是一套面向 Clang/LLVM 生态的静态分析增强插件,集成 ASAN、CFI、SafeSt…...

UE5新手避坑:解决‘hostfxr.dll找不到’和.NET Core版本冲突的完整指南

UE5开发环境配置:彻底解决.NET Core依赖问题的实战手册 刚接触虚幻引擎5的开发者们,往往会在配置开发环境时遇到各种"拦路虎"。其中,.NET Core运行时问题堪称最典型的"新手杀手"——当你满怀期待地从版本控制系统拉取项…...

php.ini 中 session.save_path 指向的目录必须对 Web 用户可写,但其他用户不可读。

它的本质是:利用 Linux 的“粘滞位 (Sticky Bit)”和“目录执行权限”特性,构建一个 “公共投递箱” 模型。Web 服务器进程(如 www-data)可以往箱子里扔信件(创建 Session 文件),也可以取走自己…...

Vue项目里用vxe-grid做后台管理表格,我踩过的这些坑你千万别再踩了

Vue项目中vxe-grid实战避坑指南:工单管理模块深度解析 第一次在工单管理模块用vxe-grid实现动态可编辑表格时,我对着文档里那句"支持动态下拉选项"研究了整整三天。直到在Chrome调试器里看到column.editRender.props.options这个关键属性时&am…...

【毕设】厨艺交流平台设计与实现

💟博主:程序员俊星:CSDN作者、博客专家、全栈领域优质创作者 💟专注于计算机毕业设计,大数据、深度学习、Java、小程序、python、安卓等技术领域 📲文章末尾获取源码数据库 🌈还有大家在毕设选题…...

Oumuamua-7b-RP应用场景:日语JLPT N2备考者进行情景会话模拟训练

Oumuamua-7b-RP应用场景:日语JLPT N2备考者进行情景会话模拟训练 1. 项目概述 Oumuamua-7b-RP 是一款专为日语学习者设计的角色扮演对话工具,基于先进的Mistral-7B大语言模型架构开发。这个Web界面特别适合准备JLPT N2考试的学习者,通过模拟…...

Phi-3-mini-4k-instruct-gguf惊艳效果:生成符合PEP8规范的Python代码+单元测试

Phi-3-mini-4k-instruct-gguf惊艳效果:生成符合PEP8规范的Python代码单元测试 1. 模型简介与部署 Phi-3-Mini-4K-Instruct是一个38亿参数的轻量级开源模型,属于Phi-3系列中的Mini版本。该模型经过专门训练,能够生成高质量的代码内容&#x…...

**基于Geolocation API的精准位置服务开发实战:从原理到Vue3+JavaScript

基于Geolocation API的精准位置服务开发实战:从原理到Vue3JavaScript落地应用 在现代Web应用中,用户地理位置信息已成为提升体验的核心要素之一。无论是地图导航、本地化推荐,还是安全验证机制,Geolocation API 都是前端获取用户实…...

BOSS直接自动点击未读消息并发送求简历请求

最新版本代码 26-04-23 修复没有对话无法发送求简历按钮(() > {/******************************************************************* 可配置参数******************************************************************/const CONFIG {countdownSeconds: 3,openConfirmDe…...

13款降AI率工具实测:论文查重高怎么改,降重鸟稳居榜首

上周,我室友三天三夜敲完综述,维普AI率飙到46%,他抱头大喊“我又没抄”,我替他摸索工具,顺便吐槽:写得像人还被说像机器。 定向适配各大检测:平台选得对,降幅更稳 降重鸟地址&…...

别再死记公式了!用‘矩形面积’法秒懂均匀分布概率计算(附Python验证)

用几何直觉破解均匀分布:矩形面积法实战指南 想象一下,你经营着一家小花店,每天能卖出10到40束鲜花。某天有位老顾客要预订15到30束花,你想快速估算满足这个需求的概率——这时你需要的不是复杂的积分公式,而是一把直尺…...

Python 微信扫码活动系统实战

系统功能 1. 微信扫码入口 - 活动二维码:支持生成门店活动二维码,顾客扫码即可进入活动页面 - 活动识别:支持识别不同门店、不同活动场景 - 活动状态控制:支持活动启用、停用、过期控制 - 首次进入校验:校验用户是否首次参与、是否已领取、是否重复参与 2. 红包领取模…...

Docker 27容器化低代码平台上线后CPU突增400%?资深SRE带你逆向追踪runtime shim层的5个隐式依赖陷阱

第一章:Docker 27容器化低代码平台上线后CPU突增400%的现场还原凌晨两点,监控告警触发:核心服务容器 CPU 使用率从平均12%飙升至峰值520%,持续超阈值达18分钟。运维团队紧急接入生产环境,通过 docker stats 实时观察发…...

私有Registry沦陷实录:27个未授权镜像推送事件复盘,附GCP/AWS/EKS三平台RBAC最小权限模板

第一章:私有Registry沦陷事件全景图谱私有Docker Registry作为企业容器镜像分发的核心枢纽,其安全性直接关系到整个CI/CD链路与生产环境的可信基线。近年来,多起因配置疏漏、凭证泄露或未授权访问导致的Registry沦陷事件频发,攻击…...