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

leetcode 1658. 将 x 减到 0 的最小操作数-Minimum Operations to Reduce X to Zero

Problem: 1658. 将 x 减到 0 的最小操作数-Minimum Operations to Reduce X to Zero

求出前缀数组,以及后缀数组,然后对遍历后缀数组,对每个数字,二分查找 a=x - addfix[i],然后若满足 ind < i && prefix[ind]==a,求出最小值:mi = min(mi, n - i + 1 + ind);

最后返回最小值即可

Code

class Solution { public: int minOperations(vector<int>& nums, int x) { int n = nums.size(); vector<int> prefix{0}, addfix(n+2, 0); for(int& i : nums) prefix.push_back(prefix.back() + i); for(int i = n; i >= 1; i--) { addfix[i] = addfix[i+1] + nums[i-1]; } int ind, a, mi = INT_MAX; for(int i = n+1; i >= 1; i--) { a = x - addfix[i]; if(a < 0) break; if(a == 0) { mi = min(mi, n - i + 1); continue; } else if(a >= nums[0]) { ind = lower_bound(prefix.begin(), prefix.end(), a) - prefix.begin(); if(ind < i && prefix[ind] == a) { mi = min(mi, n - i + 1 + ind); } } } if(mi == INT_MAX) return -1; return mi; } };

方案2

class Solution { public: int minOperations(vector<int>& nums, int x) { int n = nums.size(), s = 0, ind, a, mi = INT_MAX; vector<int> prefix{0}, addfix(n+2, 0); for(int& i : nums) { s += i; prefix.push_back(s); } for(int i = 0; i <= n; i++) { a = x - (s - prefix[i]); if(a >= 0) { ind = lower_bound(prefix.begin(), prefix.end(), a) - prefix.begin(); if(ind <= i && prefix[ind] == a) { mi = min(mi, n - i + ind); } } } if(mi == INT_MAX) return -1; return mi; } };
http://www.jsqmd.com/news/642894/

相关文章:

  • 多模态对话系统2026生存清单:7项必测指标、5类隐性失效模式、3套即插即用评估工具(附大会官方Benchmark数据集)
  • 如何使用TinyColor实现JavaScript中的终极颜色操作:从基础到高级技巧
  • 7个终极Rivet性能优化技巧:提升AI代理执行效率的实用方法
  • 奇瑞加速欧洲布局,扩产计划开启新征程
  • craftzdog-homepage设计理念:从概念到实现的完整思考过程
  • ACPI调试
  • 免安装定时音乐播放工具,适用于校园上下课铃声与考试提示音自动播放
  • 前端安全开发规范
  • 从《凡人修仙传》到《Nature》:一个‘散修’博士如何用一年时间,在实验室里‘炼’出颠覆性裸眼3D技术?
  • FF14副本动画跳过插件:告别冗长等待的终极解决方案
  • JavaScript错误处理终极指南:try-catch和异常捕获的完整教程
  • otvinta-Bevel-Gear-Calculator
  • 终极指南:如何用gumbo-parser构建协作式HTML编辑器
  • Material Tailwind未来路线图:探索组件库的终极发展指南
  • VB6结构体地址和长度,补齐计算
  • LangChain+LlamaIndex+AutoGen+LangGraph框架对比
  • 审计日志:记录 Agent 在 Harness 中的每一个动作
  • DM V5.0.6.03.103 Windows 2000 (2026.04.13)
  • 5分钟快速上手:智慧树自动刷课插件的终极使用指南
  • Kubernetes Descheduler在边缘计算中的终极优化指南:10个关键策略实现资源平衡
  • CentOS 7 单机实战:2025年可用OpenStack All-in-One部署避坑指南
  • Coq性能基准测试终极指南:3个实用技巧比较不同证明策略的执行效率
  • 吊耳承载力与钢丝绳选型计算软件开发-集成吊耳受力分析工具及钢丝绳匹配计算器
  • SQL触发器报错如何记录异常日志_利用TRY CATCH捕获错误
  • 深入解析图像感知质量指标:从PSNR到Perceptual Index的实践指南
  • 麒麟系统安装NVIDIA驱动指南
  • 终极PHP调试工具:php-debugbar数据格式化器详解——让变量转储、查询美化与HTML安全变得简单
  • VisualVM实战指南:从插件安装到远程JVM监控
  • 物理信息神经网络数据预处理终极指南:如何准备适合深度学习求解的PDE数据
  • 嵌入式系统革命:embedded-hal 硬件抽象层完全指南