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

元宝 快速思考 LeetCode 3229. 使数组等于目标数组所需的最少操作次数 Java实现

LeetCode 3229 — 使数组等于目标数组所需的最少操作次数

📌 题目理解

每次操作:选任意连续子数组,全体 +1 或 -1,求让numstarget的最少步数。


💡 核心转化

差值数组diff[i] = target[i] - nums[i]

问题等价于:用最少次「对子数组整体 ±1」把diff全消为 0。

关键直觉 —— 画成柱状图

diff画出来,正数 = 山峰,负数 = 山谷。一次"对子数组 +1"相当于把一段连续的柱子上沿齐平往下削 1(同理 -1 往上填谷)。

  • 同号连续段内部的操作可以共享(像阶梯一样一层层削)

  • 正负交界处必须断开,不能共享

这意味着:总操作数 = 只看上升沿的爬升总和


🔑 最优雅解法:首尾补零 + 差分

构造虚拟数组a = [0, diff[0], diff[1], ..., diff[n-1], 0]

答案就是a[i+1] - a[i]中所有正数之和

ans = \sum_{i=0}^{n} \max(0,\ a[i+1]-a[i])
步骤含义
a[0] = 0起始基准面
a[i+1] - a[i] > 0第 i 步有一个向上的台阶,需要额外那么多层操作
a[n] → 0最后要把尾部差值归零

✅ Java 实现

class Solution { public long minimumOperations(int[] nums, int[] target) { int n = nums.length; long ans = 0; // prev 模拟 a[i],初始 a[0] = 0 long prev = 0; for (int i = 0; i < n; i++) { long cur = (long) target[i] - (long) nums[i]; // diff[i] = a[i+1] long delta = cur - prev; // a[i+1] - a[i] if (delta > 0) { ans += delta; } prev = cur; } // 尾部:虚拟的 a[n+1] = 0,delta = 0 - prev long delta = -prev; if (delta > 0) { ans += delta; } return ans; } }

⚠️ 如果你的版本签名是List<Integer>,把nums.get(i)/target.get(i)替换即可,注意转long防溢出。


🔍 举个例子走一遍

nums = [1,3,2], target = [2,1,4]

idiff[i] = target-numscurprev→curΔ=cur-prev累计 ans
初始prev=00
0110→1+11
1-2-21→-2-31
222-2→2+45
尾部02→0-25

答案 =5✓ 匹配示例


⏱️ 复杂度

时间O(n) 单次扫描
空间O(1) 只存变量

这个差分补零的技巧其实是此类"子数组统一增减"题目的通用套路(同类还有 LC 1526),记住一句话就够:操作次数 = 高度剖面所有上行台阶的爬升量之和

http://www.zskr.cn/news/1521854.html

相关文章:

  • 千誉咨询的服务优势解析,哪家更突出? - mypinpai
  • 从燃料消耗看优化:在STK中对比霍曼转移与双椭圆转移的仿真差异
  • 巴彦淖尔市2026年最新黄金回收白银回收铂金回收彩金回收五家靠谱门店及联系方式地址电话推荐TOP排行榜 - 盛世金银回收
  • Linux实时内核下的毫秒级中断响应钩子框架
  • 构建AI认知基质:记忆调度、知识锚点与协同代理架构
  • 巴中市2026年最新黄金回收白银回收铂金回收彩金回收五家靠谱门店及联系方式地址电话推荐TOP排行榜 - 盛世金银回收
  • 桂林市2026年最新黄金回收白银回收铂金回收彩金回收五家靠谱门店TOP排行榜及联系方式地址电话推荐 - 大熊猫898989
  • Cursor AI解锁终极指南:简单4步告别“试用次数已用完“
  • 工业平行宇宙:09 安全与伦理
  • IR-UWB vs FMCW雷达:在智能家居与养老监护中,哪种技术方案更靠谱?
  • 构建下一代实时通信服务器:MonaServer如何解决多协议统一难题?
  • 微信聊天记录备份指南:3步保护你的数字记忆
  • Pandas多维聚合生产实践:银行风控中的5大避坑指南
  • Y系列电机生产厂家哪家强?2026年行业深度分析与品牌评测 - 优质品牌商家
  • 白山市2026年最新黄金回收白银回收铂金回收彩金回收五家靠谱门店及联系方式地址电话推荐TOP排行榜 - 盛世金银回收
  • 解锁创维盒子E900V22C/D的完全体:开启adb root权限后,这5个玩法让老设备焕发新生
  • AI代理必须有人在环路:破解LLM幻觉与生产失效
  • FANG数据科学家面试能力图谱:业务思维、统计严谨与工程落地
  • 2026年宝鸡本地全屋定制源头厂家行业调研:技术、环保与本地化服务格局分析 - 优质品牌商家
  • 从LSD到M-LSD:盘点那些年我们用过的线段检测算法(附开源代码链接)
  • 告别Google Play自动签名:手把手教你用jarsigner和KeyStore重签Android AAB包
  • 工业物联网(IIoT)网关实战:将欧姆龙CP系列PLC数据接入MQTT/云平台(基于Node-RED或IoT边缘设备)
  • 百色市2026年最新黄金回收白银回收铂金回收彩金回收五家靠谱门店及联系方式地址电话推荐TOP排行榜 - 盛世金银回收
  • LLM应用四层纵深防御架构:从提示词注入到输出校验
  • LLM Agent工程实践:从工具调用到生产级容错的完整落地指南
  • 微信单向好友检测终极指南:5分钟找出谁删除了你
  • 告别Arduino IDE:用Python玩转ESP32-CAM实时图传,对比Micropython和OpenCV方案优劣
  • Airflow任务组失败处理:让触发与监听共进退
  • 电商用户行为分析实战:SQL清洗、Session识别与RFM建模
  • 对初学C语言者的一些建议(原创)