【C++差分数组】3229. 使数组等于目标数组所需的最少操作次数|2066
本文涉及知识点
C++差分数组
LeetCode3229. 使数组等于目标数组所需的最少操作次数
给你两个长度相同的正整数数组 nums 和 target。
在一次操作中,你可以选择 nums 的任何子数组,并将该子数组内的每个元素的值增加或减少 1。
返回使 nums 数组变为 target 数组所需的 最少 操作次数。
示例 1:
输入: nums = [3,5,1,2], target = [4,6,2,4]
输出: 2
解释:
执行以下操作可以使 nums 等于 target:
- nums[0…3] 增加 1,nums = [4,6,2,3]。
- nums[3…3] 增加 1,nums = [4,6,2,4]。
示例 2:
输入: nums = [1,3,2], target = [2,1,4]
输出: 5
解释:
执行以下操作可以使 nums 等于 target: - nums[0…0] 增加 1,nums = [2,3,2]。
- nums[1…1] 减少 1,nums = [2,2,2]。
- nums[1…1] 减少 1,nums = [2,1,2]。
- nums[2…2] 增加 1,nums = [2,1,3]。
- nums[2…2] 增加 1,nums = [2,1,4]。
提示:
1 <= nums.length == target.length <= 105
1 <= nums[i], target[i] <= 108
差分数组
显然调整操作顺序,不影响结果。那我们按子数组的left升序排序。
如果对子数组nums[i…j] +1,则不会对子数组[x1,x2]-1,i <= x1 <=j 。
如果x2 <= j,拆分[i…x1-1]和[x2+1…j]两个子数组,操作次数一样多。
如果x2 > j,拆分[i…x1-1] ,nsum[j+1,x2],操作次数一样多。
即任意x只会+1,或只会-1。
修改nums[i]有两种方法:
一,增加新数组,以i开始。
二,延长以nums[i-1]结尾的数组。
pre记录以i-1结尾的子数组数量,正数表示+1的子数组数量,负数表示以-1的子数组数量。
needAdd = target[i] - nums[i]
curNeed = (needAdd*pre>0) ? (abs(needAdd) - abs(pre)) : abs(needAdd)
curNeed = max(0,curNeed)
curNeed之和就是答案。
代码
核心代码
class Solution {public:long long minimumOperations(vector<int>& nums, vector<int>& target) {int pre = 0;long long ret = 0;for (int i = 0; i < nums.size(); i++) {const int needAdd = target[i] - nums[i];int cur = abs(needAdd);if ((long long)pre * needAdd > 0) {cur = max(0, cur - abs(pre));}ret += cur;pre = needAdd; } return ret;}};
单元测试
vector<int> nums, target;TEST_METHOD(TestMethod11){nums = { 3, 5, 1, 2 }, target = { 4, 6, 2, 4 };auto res = Solution().minimumOperations(nums, target);AssertEx(2LL, res);}TEST_METHOD(TestMethod12){nums = { 1,3,2}, target = { 2,1,4};auto res = Solution().minimumOperations(nums, target);AssertEx(5LL, res);}TEST_METHOD(TestMethod13){nums = { 27365,12257,22134,59798,42430,45234,23451,17474,30245,18748,15156,24804,5127,26494,3699,45569,36298,54271,29728,15718,18849,1286,11209,11282,23755,27453,23051,42873,3196,20479,1097,16921,51123,12684,59417,14407,38527,16036,30541,41185,9492,27339,59887,45402,13260,57491,54209,21949,31623,11629,61359,20819,10794,28506,35507,47322,52923,16993,51123,12732,40738,55985,52234,39826,36490,40394,563,5310,19641,57708,21112,60485,50550,50958,10069,6700,45207,46580,5339,30829,21522,29769,61995,12618,40604,4687,8404,28513,10003,22243,59850,8166,46924,17686,4045,10437,16855,9626,23986,32359,36935,45058,49710,15050,12895,1637,6728,25410,2265,10073,23083,14044,31335,32223,26228,44618,24473,33009,50736,48303,9918,5760,29877,34949,41350,60372,1755,27769,36828,7551,32660,42727,48621,34092,42288,9600,3521,6967,42093,62477,26025,55079,39038,21280,16525,53348,62391,44270,4606,2356,1783,56534,356,60748,49351,31625,34405,29026,34421,8953,5625,41826,41637,51672,21626,37991,5508,56225,10104,17071,18839,25845,833,35591,5559,4487,35578,10052,11051,34710,21643,5701,33470,14741,43166,291,31857,37696,5783,34785,19408,26497,21704,60364,34579,51376,24727,45252,21819,3314,27055,11585,25925,4103,25528,52583,47166,37792,19482,7572,14110,4238,25691,60053,10691,9906,22067,21461,60027,11762,24607,20195,3582,21376,4489,4597,56479,35739,33935,15663,35443,4640,52095,39902,57636,21941,21681,4285,61790,52096,49361,11117,60475,44534,42343,9133,52709,58833,43482,36502,40496,30990,27773,23233,21518,23812,51120,59225,14868,47112,54639,8028,14684,6388,27480,53519,40526,37554,42411,43004,15116,43512,36249,32544,24343,30162,4192,23720,41090,20036,28034,40594,16128,45881,39653,39237,58633,41049,10504,46133,43447,3742,50296,33068,58338,38355,23706,60654,29244,36820,41301,44202,38622,7029,28669,50049,45995,8849,36113,55336,34463,6345,34541,38141,29664,11161,58189,12166,28987,30618,58026,42333,26714,34205,30256,55305,41764,25361,37582,42203,12950,3404,1067,10158,38872,61473,3244,34040,14835,2456,47150,52419,55166,42491,43095,31392,45188,43896,34973,2218,42027,16057,12268,36771,33429,19100,26961,57475,60984,3670,55446,49732,54177,46380,33181,52252,1420,47532,20569,14046,52741,41263,30228,50618,5430,52696,11958,32094,34838,30848,54209,9527,45989,16148,12105,9450,59434,33377,18109,1769,4934,14632,27751,28122,19370,25114 }, target = { 51103,44402,7105,38971,26824,17531,29942,9148,38778,44441,41611,50620,12182,54248,26669,52545,42288,45331,39030,1759,59026,5697,24530,36958,1070,42016,25749,6643,11793,32735,46870,29002,21764,60173,1032,32765,33717,47168,20824,43334,43138,55640,11844,32119,21850,282,53623,38330,27261,47738,22105,56436,27137,12624,55095,14551,26246,42006,40504,15919,4351,25377,52738,14451,17720,50729,8804,17583,51583,53315,59805,1487,19984,18563,20701,22741,56488,56531,50488,39490,1635,806,13625,5044,2223,53773,30353,27711,45843,42300,22451,36846,45938,42975,24105,4717,33577,36902,25897,3870,7314,49736,32744,13751,13699,4833,18358,56278,1601,7354,47598,9509,52872,42,40610,31734,31753,22322,36992,17047,54787,7483,27163,8809,25491,35183,17156,21800,28115,49977,23158,4376,45525,55535,27986,49905,53785,43973,1568,53257,47722,39045,46922,26521,7166,25457,54026,55515,5212,11178,28615,36148,5403,29457,26258,9532,43841,51487,44875,52659,246,35050,8035,11885,36262,55220,47908,48759,18301,19433,15629,7745,10084,51963,37346,56219,21876,53387,22099,18642,32952,55986,28308,75,55870,45884,4286,52878,36779,23367,44834,4496,49992,54297,7559,56785,55526,39154,58139,13482,48189,3423,8784,22279,14660,30144,16426,16291,7249,59547,27077,28247,30127,20123,58178,33231,39826,61962,46740,32787,20843,55633,49687,3776,6782,25369,46623,58356,25718,5123,56224,20703,40289,20302,61267,57214,1052,44339,57320,6633,27407,39223,31101,22246,9119,54045,23456,50493,17854,12852,32314,468,11630,28538,20646,29716,27297,33757,2097,23455,61209,41210,38673,10104,15608,57786,9945,20341,28456,11161,14518,29257,43096,12390,18739,30448,27463,17346,3140,6827,500,30829,35181,15212,59606,25991,44299,39711,50384,54345,40473,56647,51391,11843,54934,8781,13699,31637,38225,10101,49648,49313,12919,25960,54156,5839,29946,61715,14777,42030,34248,12597,38642,10626,55921,36260,43072,40927,26773,26454,39465,26826,39595,55338,50220,41655,47471,18870,29379,24498,45358,26491,35785,55618,49829,41192,28044,54276,42830,29181,52731,35713,18919,58570,13101,30558,42625,1744,21922,48347,57073,43139,45139,39547,28131,33623,50487,52425,28545,34694,39831,5211,55983,13289,30979,53518,48606,16142,57170,32623,51579,28591,43110,33916,59474,12717,25677,5803,16152,54254,13156,47751,33501,49746,33628,14144,23691,645,7313,55919,40504,42762,7746,10467,60083,31712 };auto res = Solution().minimumOperations(nums, target);AssertEx(5573479LL, res);}
类似题目
洛谷P3078: 某人有n堆牌,每次操作可以将i堆到第j堆各打一张牌出来。问最少多次可以打光牌。

扩展阅读
| 我想对大家说的话 |
|---|
| 工作中遇到的问题,可以按类别查阅鄙人的算法文章,请点击《算法与数据汇总》。 |
| 学习算法:按章节学习《喜缺全书算法册》,大量的题目和测试用例,打包下载。重视操作 |
| 有效学习:明确的目标 及时的反馈 拉伸区(难度合适) 专注 |
| 闻缺陷则喜(喜缺)是一个美好的愿望,早发现问题,早修改问题,给老板节约钱。 |
| 子墨子言之:事无终始,无务多业。也就是我们常说的专业的人做专业的事。 |
| 如果程序是一条龙,那算法就是他的是睛 |
| 失败+反思=成功 成功+反思=成功 |
视频课程
先学简单的课程,请移步CSDN学院,听白银讲师(也就是鄙人)的讲解。
https://edu.csdn.net/course/detail/38771
如何你想快速形成战斗了,为老板分忧,请学习C#入职培训、C++入职培训等课程
https://edu.csdn.net/lecturer/6176
测试环境
操作系统:win7 开发环境: VS2019 C++17
或者 操作系统:win10 开发环境: VS2022 C++17
如无特殊说明,本算法用**C++**实现。

相关文章:
【C++差分数组】3229. 使数组等于目标数组所需的最少操作次数|2066
本文涉及知识点 C差分数组 LeetCode3229. 使数组等于目标数组所需的最少操作次数 给你两个长度相同的正整数数组 nums 和 target。 在一次操作中,你可以选择 nums 的任何子数组,并将该子数组内的每个元素的值增加或减少 1。 返回使 nums 数组变为 tar…...
浅谈PyTorch中的DP和DDP
目录 1. 引言2. PyTorch 数据并行(Data Parallel, DP)2.1 DP 的优缺点2.2 DP 实现代码示例 3. PyTorch 分布式数据并行(Distributed Data Parallel, DDP)3.1 DDP 的优缺点3.2 分布式基本概念3.3 DDP 的应用流程3.5 DDP 实现代码示…...
在Windows上利用谷歌浏览器进行视频会议和协作
随着远程工作和在线教育的普及,使用谷歌浏览器在Windows上进行视频会议和协作变得越来越常见。本文将为您提供一个详细的教程,教您如何在Windows上利用谷歌浏览器进行视频会议和协作,同时解决一些常见的问题。(本文由https://goog…...
VMware Fusion 13.6.1 发布下载,修复 4 个已知问题
VMware Fusion 13.6.1 发布下载,修复 4 个已知问题 VMware Fusion 13.6.1 for Mac - 领先的免费桌面虚拟化软件 适用于基于 Intel 处理器和搭载 Apple 芯片的 Mac 的桌面虚拟化软件 请访问原文链接:https://sysin.org/blog/vmware-fusion-13/ 查看最新…...
P9751 [CSP-J 2023] 旅游巴士
P 9751 P9751 P9751 部分分思路 题目要求时间必须是 k k k 的非负整数倍,所以想到了升维。这样就变成了一道分层图最短路的题目。用 BFS 算法可以拿到 A i 0 A_i0 Ai0 的 35 35 35 分。 满分思路 其实部分分的思路已经很接近正解了,想要拿到满…...
【Linux】man手册安装使用
目录 man(manual,手册) 手册安装: 章节区分: 指令参数: 使用场景: 手册内容列表: 手册查看快捷键: 实例: 仍致谢:Linux常用命令大全(手册) – 真正好用的Linux命令在线查询网站 提供的命令查询 在开头先提醒一下:在 man 手册中退出的方法很简单…...
mysql学习教程,从入门到精通,SQL处理重复数据(39)
1、SQL处理重复数据 使用GROUP BY和HAVING子句删除重复数据(以SQL Server为例)”的背景和原理的详细解释: 1.1、背景 在数据库管理中,数据重复是一个常见的问题。重复数据可能由于多种原因产生,如数据录入错误、数据…...
mapbox解决wmts请求乱码问题
贴个群号 WebGIS学习交流群461555818,欢迎大家 事故现场 如图所示,wmts请求全是乱码,看起来像是将一个完整的请求拆成一个一个的字母了,而且控制台打印map.getStyle() 查看该source发现不出异常 解决办法 此类问题就是由于更…...
《C++职场中设计模式的学习与应用:开启高效编程之旅》
在 C职场中,设计模式是提升代码质量、增强程序可维护性和可扩展性的强大武器。掌握并正确应用设计模式,不仅能让你在工作中更加得心应手,还能为你的职业发展增添有力的砝码。那么,如何在 C职场中学习和应用设计模式呢?…...
Maya动画--基础约束
005-基础约束02_哔哩哔哩_bilibili 父子约束 移动圆环,球体会跟着移动,并回到初始的相对位置 不同物体间没有层级关系 明确子物体与父物体间的关系 衣服上的纽扣 法线约束 切线约束 碰到中心时会改变方向...
腾讯云License 相关
腾讯云视立方 License 是必须购买的吗? 若您下载的腾讯云视立方功能模块中,包含直播推流(主播开播和主播观众连麦/主播跨房 PK)、短视频(视频录制编辑/视频上传发布)、终端极速高清和腾讯特效功能模块&…...
开放式耳机什么品牌最好?十大超好用开放式耳机排名!
由于长时间使用传统入耳式耳机可能会对耳道健康带来潜在的负面影响,越来越多的用户倾向于选择开放式耳机,这种设计不侵入耳道。它有助于降低耳内湿度、减少细菌滋生,以及缓解耳道因封闭而过热的不适。但是大部分人还是不知道怎么选择开放式耳…...
基于Zynq SDIO WiFi移植二(支持2.4/5G)
1 SDIO设备识别 经过编译,将移植好的uboot、kernel、rootFS、ramdisk等烧录到Flash中,上电启动,在log中,可看到sdio设备 [ 1.747059] mmc1: queuing unknown CIS tuple 0x01 (3 bytes) [ 1.761842] mmc1: queuing unknown…...
Spring Boot敏感数据动态配置:深入实践与安全性提升
在构建Spring Boot应用的过程中,敏感数据的处理与保护是至关重要的。传统上,这些敏感数据(如数据库密码、API密钥、加密密钥等)可能被硬编码在配置文件中,这不仅增加了泄露的风险,也限制了配置的灵活性和可…...
软考数据库部分 ---- (概念数据库模型,三级模式,两级映像,事物管理)
文章目录 一、概念数据库模型二、结构数据库模型三、三级模式四、两级映像五、关系模式基本术语六、关系模式七、关系的数学定义八、数据定义语言九、SQL访问控制十、视图十一、索引十二、关系模式十三、范式十四、数据库设计十五、事物管理(ACID)十六、…...
AI 概念大杂烩
目录 介绍 数据挖掘 / 机器学习 / 深度学习 一、数据挖掘(Data Mining) 1. 定义 2. 目标 3. 常用算法 二、机器学习(Machine Learning) 1. 定义 2. 目标 3. 常用算法 三、深度学习(Deep Learning࿰…...
Composer和PHP有什么关系
Composer是PHP的一个依赖管理工具,以下是对Composer及其与PHP关系的详细解释: Composer简介 核心功能:Composer的核心思想是“依赖管理”,它能够自动下载和安装项目所依赖的库、框架或插件等。这些依赖项可以是PHP本身的库文件&…...
【PGCCC】在 Postgres 上构建图像搜索引擎
我最近看到的最有趣的电子商务功能之一是能够搜索与我手机上的图片相似的产品。例如,我可以拍一双鞋或其他产品的照片,然后搜索产品目录以查找类似商品。使用这样的功能可以是一个相当简单的项目,只要有合适的工具。如果我们可以将问题定义为…...
性能测试之性能问题分析
开始性能测试前需要了解的内容: 1、项目具体需求。 2、指标:响应时间在多少以内,并发数多少,tps多少,总tps多少,稳定性交易总量多少,事务成功率,交易波动范围,稳定运行…...
错过了A股,别再错过AI表情包!N款变现攻略,你选哪个?
本文背景 据 Swyft Media 统计,全世界每天各类聊天 app 发送的表情符号有 60 多亿,我们国家每天表情包发送量大概 6 亿次。 表情包简直就是个大淘金池,最近用 AI 做表情包也挺火。所以今天给大家讲讲一个用 AI 做表情包变现的项目。 以前没…...
突破大文件传输瓶颈:aliyunpan快传链接技术全解析
突破大文件传输瓶颈:aliyunpan快传链接技术全解析 【免费下载链接】aliyunpan 阿里云盘命令行客户端,支持JavaScript插件,支持同步备份功能。 项目地址: https://gitcode.com/GitHub_Trending/ali/aliyunpan 大文件传输的现实痛点&…...
突破性GPU显存释放技术:解决ComfyUI模型占用难题的底层API方案
突破性GPU显存释放技术:解决ComfyUI模型占用难题的底层API方案 【免费下载链接】ComfyUI-Easy-Use In order to make it easier to use the ComfyUI, I have made some optimizations and integrations to some commonly used nodes. 项目地址: https://gitcode.c…...
芒格思想阅读建议
📚 来源:《穷查理宝典》演讲精华**整理:小橙子 🍊 | 日期:2026-03-27🌟 必读三篇(核心精华) 芒格思想的精华集中在三篇演讲,按以下顺序阅读效果最佳: 阅读顺序…...
Openclaw 股票分析助手,自定义选股+情绪预警实时推送
最近我越来越觉得,炒股这件事,难的不是完全看不懂,而是你根本没那么多时间,把该看的东西全都看一遍。平时工作忙一点,白天不是在开会,就是在处理各种事情。别说一直盯着盘面了,有时候连行情软件…...
Qwen3-ASR-0.6B与Anaconda环境配置:一站式语音识别开发平台
Qwen3-ASR-0.6B与Anaconda环境配置:一站式语音识别开发平台 1. 引言 语音识别技术正在改变我们与设备交互的方式,从智能助手到实时字幕,从会议记录到语音搜索,这项技术已经深入到我们生活的方方面面。今天我要跟大家分享的是如何…...
威联通NAS结合阿里云实现安全远程访问:域名与SSL证书全流程配置
1. 为什么需要为威联通NAS配置域名和SSL证书? 很多朋友买了威联通NAS后都会遇到一个头疼的问题:怎么在外面也能安全地访问家里的NAS?直接暴露IP地址不仅难记,还存在安全隐患。我刚开始用NAS时也踩过不少坑,后来发现用阿…...
禅道企业微信消息推送改造实战:如何让群消息自动@指定成员(附源码修改)
禅道与企业微信深度集成:打造智能提醒的自动化消息推送系统 在项目管理工具与企业通讯平台的融合应用中,消息推送的智能化程度直接影响团队协作效率。禅道作为国内广泛使用的项目管理软件,与企业微信的对接虽然提供了基础通知功能࿰…...
告别海量标注!用Wav2Vec 2.0在10分钟语音数据上跑出可用ASR模型
极低资源语音识别实战:用Wav2Vec 2.0在10分钟数据上构建可用模型 当创业团队面临语音交互产品的原型开发时,最头疼的往往不是算法选择,而是标注数据匮乏的现实。传统语音识别方案需要数百小时的标注语音才能达到基本可用水平,而Wa…...
高效批量OCR处理实战指南:提升图片文字提取效率的完整方案
高效批量OCR处理实战指南:提升图片文字提取效率的完整方案 【免费下载链接】Umi-OCR Umi-OCR: 这是一个免费、开源、可批量处理的离线OCR软件,适用于Windows系统,支持截图OCR、批量OCR、二维码识别等功能。 项目地址: https://gitcode.com/…...
零基础部署Ostrakon-VL-8B:用Chainlit前端,轻松实现智能图片分析
零基础部署Ostrakon-VL-8B:用Chainlit前端,轻松实现智能图片分析 1. 为什么你需要Ostrakon-VL-8B? 想象一下,你经营着一家连锁便利店,每天需要检查几十家门店的商品陈列、价格标签和卫生状况。传统方法是让店长拍照发…...
