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

【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。 在一次操作中&#xff0c;你可以选择 nums 的任何子数组&#xff0c;并将该子数组内的每个元素的值增加或减少 1。 返回使 nums 数组变为 tar…...

浅谈PyTorch中的DP和DDP

目录 1. 引言2. PyTorch 数据并行&#xff08;Data Parallel, DP&#xff09;2.1 DP 的优缺点2.2 DP 实现代码示例 3. PyTorch 分布式数据并行&#xff08;Distributed Data Parallel, DDP&#xff09;3.1 DDP 的优缺点3.2 分布式基本概念3.3 DDP 的应用流程3.5 DDP 实现代码示…...

在Windows上利用谷歌浏览器进行视频会议和协作

随着远程工作和在线教育的普及&#xff0c;使用谷歌浏览器在Windows上进行视频会议和协作变得越来越常见。本文将为您提供一个详细的教程&#xff0c;教您如何在Windows上利用谷歌浏览器进行视频会议和协作&#xff0c;同时解决一些常见的问题。&#xff08;本文由https://goog…...

VMware Fusion 13.6.1 发布下载,修复 4 个已知问题

VMware Fusion 13.6.1 发布下载&#xff0c;修复 4 个已知问题 VMware Fusion 13.6.1 for Mac - 领先的免费桌面虚拟化软件 适用于基于 Intel 处理器和搭载 Apple 芯片的 Mac 的桌面虚拟化软件 请访问原文链接&#xff1a;https://sysin.org/blog/vmware-fusion-13/ 查看最新…...

P9751 [CSP-J 2023] 旅游巴士

P 9751 P9751 P9751 部分分思路 题目要求时间必须是 k k k 的非负整数倍&#xff0c;所以想到了升维。这样就变成了一道分层图最短路的题目。用 BFS 算法可以拿到 A i 0 A_i0 Ai​0 的 35 35 35 分。 满分思路 其实部分分的思路已经很接近正解了&#xff0c;想要拿到满…...

【Linux】man手册安装使用

目录 man(manual,手册) 手册安装: 章节区分&#xff1a; 指令参数: 使用场景&#xff1a; 手册内容列表: 手册查看快捷键: 实例: 仍致谢:Linux常用命令大全(手册) – 真正好用的Linux命令在线查询网站 提供的命令查询 在开头先提醒一下:在 man 手册中退出的方法很简单…...

mysql学习教程,从入门到精通,SQL处理重复数据(39)

1、SQL处理重复数据 使用GROUP BY和HAVING子句删除重复数据&#xff08;以SQL Server为例&#xff09;”的背景和原理的详细解释&#xff1a; 1.1、背景 在数据库管理中&#xff0c;数据重复是一个常见的问题。重复数据可能由于多种原因产生&#xff0c;如数据录入错误、数据…...

mapbox解决wmts请求乱码问题

贴个群号 WebGIS学习交流群461555818&#xff0c;欢迎大家 事故现场 如图所示&#xff0c;wmts请求全是乱码&#xff0c;看起来像是将一个完整的请求拆成一个一个的字母了&#xff0c;而且控制台打印map.getStyle() 查看该source发现不出异常 解决办法 此类问题就是由于更…...

《C++职场中设计模式的学习与应用:开启高效编程之旅》

在 C职场中&#xff0c;设计模式是提升代码质量、增强程序可维护性和可扩展性的强大武器。掌握并正确应用设计模式&#xff0c;不仅能让你在工作中更加得心应手&#xff0c;还能为你的职业发展增添有力的砝码。那么&#xff0c;如何在 C职场中学习和应用设计模式呢&#xff1f;…...

Maya动画--基础约束

005-基础约束02_哔哩哔哩_bilibili 父子约束 移动圆环&#xff0c;球体会跟着移动&#xff0c;并回到初始的相对位置 不同物体间没有层级关系 明确子物体与父物体间的关系 衣服上的纽扣 法线约束 切线约束 碰到中心时会改变方向...

腾讯云License 相关

腾讯云视立方 License 是必须购买的吗&#xff1f; 若您下载的腾讯云视立方功能模块中&#xff0c;包含直播推流&#xff08;主播开播和主播观众连麦/主播跨房 PK&#xff09;、短视频&#xff08;视频录制编辑/视频上传发布&#xff09;、终端极速高清和腾讯特效功能模块&…...

开放式耳机什么品牌最好?十大超好用开放式耳机排名!

由于长时间使用传统入耳式耳机可能会对耳道健康带来潜在的负面影响&#xff0c;越来越多的用户倾向于选择开放式耳机&#xff0c;这种设计不侵入耳道。它有助于降低耳内湿度、减少细菌滋生&#xff0c;以及缓解耳道因封闭而过热的不适。但是大部分人还是不知道怎么选择开放式耳…...

基于Zynq SDIO WiFi移植二(支持2.4/5G)

1 SDIO设备识别 经过编译&#xff0c;将移植好的uboot、kernel、rootFS、ramdisk等烧录到Flash中&#xff0c;上电启动&#xff0c;在log中&#xff0c;可看到sdio设备 [ 1.747059] mmc1: queuing unknown CIS tuple 0x01 (3 bytes) [ 1.761842] mmc1: queuing unknown…...

Spring Boot敏感数据动态配置:深入实践与安全性提升

在构建Spring Boot应用的过程中&#xff0c;敏感数据的处理与保护是至关重要的。传统上&#xff0c;这些敏感数据&#xff08;如数据库密码、API密钥、加密密钥等&#xff09;可能被硬编码在配置文件中&#xff0c;这不仅增加了泄露的风险&#xff0c;也限制了配置的灵活性和可…...

软考数据库部分 ---- (概念数据库模型,三级模式,两级映像,事物管理)

文章目录 一、概念数据库模型二、结构数据库模型三、三级模式四、两级映像五、关系模式基本术语六、关系模式七、关系的数学定义八、数据定义语言九、SQL访问控制十、视图十一、索引十二、关系模式十三、范式十四、数据库设计十五、事物管理&#xff08;ACID&#xff09;十六、…...

AI 概念大杂烩

目录 介绍 数据挖掘 / 机器学习 / 深度学习 一、数据挖掘&#xff08;Data Mining&#xff09; 1. 定义 2. 目标 3. 常用算法 二、机器学习&#xff08;Machine Learning&#xff09; 1. 定义 2. 目标 3. 常用算法 三、深度学习&#xff08;Deep Learning&#xff0…...

Composer和PHP有什么关系

Composer是PHP的一个依赖管理工具&#xff0c;以下是对Composer及其与PHP关系的详细解释&#xff1a; Composer简介 核心功能&#xff1a;Composer的核心思想是“依赖管理”&#xff0c;它能够自动下载和安装项目所依赖的库、框架或插件等。这些依赖项可以是PHP本身的库文件&…...

【PGCCC】在 Postgres 上构建图像搜索引擎

我最近看到的最有趣的电子商务功能之一是能够搜索与我手机上的图片相似的产品。例如&#xff0c;我可以拍一双鞋或其他产品的照片&#xff0c;然后搜索产品目录以查找类似商品。使用这样的功能可以是一个相当简单的项目&#xff0c;只要有合适的工具。如果我们可以将问题定义为…...

性能测试之性能问题分析

开始性能测试前需要了解的内容&#xff1a; 1、项目具体需求。 2、指标&#xff1a;响应时间在多少以内&#xff0c;并发数多少&#xff0c;tps多少&#xff0c;总tps多少&#xff0c;稳定性交易总量多少&#xff0c;事务成功率&#xff0c;交易波动范围&#xff0c;稳定运行…...

错过了A股,别再错过AI表情包!N款变现攻略,你选哪个?

本文背景 据 Swyft Media 统计&#xff0c;全世界每天各类聊天 app 发送的表情符号有 60 多亿&#xff0c;我们国家每天表情包发送量大概 6 亿次。 表情包简直就是个大淘金池&#xff0c;最近用 AI 做表情包也挺火。所以今天给大家讲讲一个用 AI 做表情包变现的项目。 以前没…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

Typeerror: cannot read properties of undefined (reading ‘XXX‘)

最近需要在离线机器上运行软件&#xff0c;所以得把软件用docker打包起来&#xff0c;大部分功能都没问题&#xff0c;出了一个奇怪的事情。同样的代码&#xff0c;在本机上用vscode可以运行起来&#xff0c;但是打包之后在docker里出现了问题。使用的是dialog组件&#xff0c;…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

Netty从入门到进阶(二)

二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架&#xff0c;用于…...

SQL慢可能是触发了ring buffer

简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

MySQL 知识小结(一)

一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库&#xff0c;分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷&#xff0c;但是文件存放起来数据比较冗余&#xff0c;用二进制能够更好管理咱们M…...

【JavaSE】多线程基础学习笔记

多线程基础 -线程相关概念 程序&#xff08;Program&#xff09; 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序&#xff0c;比如我们使用QQ&#xff0c;就启动了一个进程&#xff0c;操作系统就会为该进程分配内存…...