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

2026-05-21:变成目标数组的最少操作次数。用go语言,给定两个长度相同的数组 nums 和 target。 - nums[i] 表示当前位置 i 当前的值。 - target[i] 表示当前位

2026-05-21变成目标数组的最少操作次数。用go语言给你两个长度为 n 的整数数组 nums 和 target。nums[i] 表示当前位置 i 的当前值target[i] 表示你希望当前位置 i 最终变成的期望值。你可以进行任意多次操作可以不做。每次操作你要先选定一个整数 x然后在数组 nums 里找出所有“极大连续区间”这些区间里的每个位置都等于 x且该区间在保持全为 x 的前提下不能再向左或向右扩展也就是已经是该值 x 的最长连续段并且是无法再延伸的那种。对每个这样的区间 [l, r]本次操作会把这个区间内的 nums 全部替换成 target 对应位置的值把 nums[l…r] 直接改成 target[l…r]。你的目标是让最终 nums 完全等于 target问最少需要多少次操作。1 n nums.length target.length 100000。1 nums[i], target[i] 100000。输入 nums [1,2,3], target [2,1,3]。输出 2解释选择 x 1极大段 [0, 0] 被更新 - nums 变为 [2, 2, 3]。选择 x 2极大段 [0, 1] 被更新nums[0] 保持为 2nums[1] 变为 1 - nums 变为 [2, 1, 3]。因此将 nums 转换为 target 需要 2 次操作。题目来自力扣3810。一、分步骤详细推演过程初始状态nums[1, 2, 3]target[2, 1, 3]已操作次数0第一步执行第 1 次操作选择 x 1最优选择能最快修正错误位置找 nums 中 x1 的极大连续区间遍历数组只有索引 0 位置是 1左边无元素、右边是 2不是1所以极大区间是[0, 0]。执行替换把 nums[0] 替换成 target[0]值为2。操作后状态nums[2, 2, 3]target[2, 1, 3]已操作次数1第二步执行第 2 次操作选择 x 2当前唯一需要修正的错误值找 nums 中 x2 的极大连续区间遍历数组索引 0、1 都是 2左边无元素、右边是 3不是2所以极大区间是[0, 1]。执行替换把 nums[0~1] 替换成 target[0~1]nums[0] 原本就是2和target一致不变nums[1] 替换成 target[1]值为1。操作后状态nums[2, 1, 3]target[2, 1, 3]已操作次数2第三步终止此时nums与target完全相等停止操作。最终最少操作次数2三、核心解题思路第一步筛选差异位置遍历两个数组找出所有nums[i] ≠ target[i]的位置这些位置是必须通过操作修正的。第二步统计「需要操作的不同数值」每次操作我们只能选择一个数值x批量修正所有x的极大区间。最少操作次数 所有需要修正的位置中不同数值的数量。示例中需要修正的数值是1和2共2个所以答案是2第三步输出结果直接返回统计到的不同数值的个数就是最少操作次数。四、时间复杂度 额外空间复杂度 分析1. 总时间复杂度核心操作一次完整遍历数组遍历所有元素对比nums和target 哈希表插入/查询操作。数组长度为n哈希表的单次操作是O(1)常数时间。总时间复杂度O(n)线性时间处理10万级数据完全高效2. 总额外空间复杂度额外使用了哈希集合存储需要修正的不同数值。哈希集合的最大元素个数最多等于数组长度n极端情况所有位置都需要修正且数值全不同。总额外空间复杂度O(n)线性空间符合题目数据范围要求总结过程先选数值x→找x的最长连续段→批量替换为目标值重复至数组一致最少操作次数 需要修正的不同数值的个数时间复杂度O(n)线性遍历空间复杂度O(n)哈希集合存储差异数值。Go完整代码如下packagemainimport(fmt)funcminOperations(nums,target[]int)int{set:map[int]struct{}{}fori,x:rangenums{ifx!target[i]{set[x]struct{}{}}}returnlen(set)}funcmain(){nums:[]int{1,2,3}target:[]int{2,1,3}result:minOperations(nums,target)fmt.Println(result)}Python完整代码如下package mainimport(fmt)func minOperations(nums,target[]int)int{set:map[int]struct{}{}fori,x:rangenums{ifx!target[i]{set[x]struct{}{}}}returnlen(set)}func main(){nums:[]int{1,2,3}target:[]int{2,1,3}result:minOperations(nums,target)fmt.Println(result)}C完整代码如下#includeiostream#includevector#includeunordered_setusingnamespacestd;intminOperations(vectorintnums,vectorinttarget){unordered_setintset;for(inti0;inums.size();i){if(nums[i]!target[i]){set.insert(nums[i]);}}returnset.size();}intmain(){vectorintnums{1,2,3};vectorinttarget{2,1,3};intresultminOperations(nums,target);coutresultendl;return0;}
http://www.zskr.cn/news/1335319.html

相关文章:

  • 告别理论!用Python可视化带你彻底搞懂电机插补算法(逐点比较法)
  • 深入ARM Cortex-M内核:除了性能参数,这些设计细节才是嵌入式稳定的关键
  • 2026年5月广西工程咨询公司哪家强?商业计划书编制机构推荐榜,可行性研究报告、项目建议书、资金申请报告厂家选择指南 - 海棠依旧大
  • Xilinx Zynq MPSoC开发实战:从Vivado到SDK的Hello World全流程解析
  • 告别串口助手!用手机APP和ESP-01S模块,5分钟搞定51单片机无线控制LED
  • 在i.MX6UL嵌入式Linux上部署ncnn:轻量级AI推理实践与优化
  • 数字化转型最大的谎言:上了低代码就能“降本增效”?
  • 鸿蒙支付模块构建:快捷充值选项与缴费记录的时间线设计
  • 2026年一人公司创业指南:OPC模式如何稳健起步
  • Alist启动报错?别慌!手把手教你用Windows命令排查并解决5244端口占用问题
  • 起酥油:市场发展现状与未来前景趋势
  • 不同场景怎么处理文档?PDF 翻译、Office 翻译、AI 美化和多语言交付指南
  • Fluent瞬态计算踩坑记录:时间统计采样设置里的3个关键细节与避坑指南
  • 从RTL到GDS:STA工程师的一天,如何用DC工具修复时序违例(以Setup Violation为例)
  • 郑州广告同行设计品牌盘点:河南广告同行设计、郑州展厅展馆设计、郑州广告同行设计、郑州文化墙设计、河南展厅展馆设计选择指南 - 优质品牌商家
  • 购物小技巧:聪明消费,避免踩坑
  • 2026年5月19日:谷歌云误停账户致Railway全平台服务中断8小时
  • 告别FPN信息瓶颈:手把手图解Gold-YOLO的‘聚合-分发’机制(附代码逐行解读)
  • 软件测试进阶之路:测试环境搭建与数据库/Linux实战
  • 别再死磕华莱士树了!手把手教你用Verilog实现更省面积的Dadda Tree乘法器(附完整代码)
  • 用STM32F407的ADC+DMA,做个PS2摇杆的“读心术”,实时读取X/Y轴电压变化
  • 2026届必备的十大降重复率平台解析与推荐
  • MiniMax-M2.7-W8A8 双机 DP=2 部署
  • 别再手动补面了!ANSA Topo_CONS命令实战:从Paste到Project,5分钟搞定复杂几何修复
  • Pandas/NumPy数据处理中,科学计数法如何‘隐形’影响你的结果?附解决方案
  • 2026年4月消毒房公司推荐,工业消毒房/消毒房/餐具消毒房/蒸汽消毒房/臭氧消毒房/消毒房定制,消毒房厂商有哪些 - 品牌推荐师
  • TG电报登录收不到短信验证码?关于 SMS fee 我是这样搞定的!
  • 手把手教你用PlatformIO给ESP32添加蓝牙HID功能(从库缺失到成功编译的全过程)
  • 【软考高级架构】论文预测——论大语言模型(LLM)在企业级系统中的部署架构与优化策略
  • RT-Thread Studio开发RA2L1:从环境搭建到GPIO输入输出实战