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

LeetCode 1658. 将x减到0的最小操作数

题目

给你一个整数数组 nums 和一个整数 x 。每一次操作时,你应当移除数组 nums 最左边或最右边的元素,然后从 x 中减去该元素的值。请注意,需要 修改 数组以供接下来的操作使用。

如果可以将 x 恰好 减到 0 ,返回 最小操作数 ;否则,返回 -1 。

思路:逆向思维 + 滑动窗口

移除的是 nums 最左边或最右边的元素,那么剩下的元素是什么?是 nums 的连续子数组。

移除的元素和 x + 剩余的元素和 = nums 的所有元素之和 s。所以剩余的元素和 = s−x。

问题变成:从 nums 中找最长的子数组(这样移除的数尽量少),满足子数组的元素和恰好等于 s−x。 最后答案为 nums 的长度减去最长子数组的长度。

注意:子数组的长度可以是 0,所以下面代码初始化 ans=−1。如果初始化 ans=0,就无法区分是否真的存在符合要求的子数组。

代码

class Solution {public int minOperations(int[] nums, int x) {int n = nums.length;int left = 0;int ans = -1;int sum = 0;for (int num : nums) {sum += num;}if (sum < x) {return -1;}int add = 0;for (int right = 0; right < n; right++) {add += nums[right];while (add > sum - x) {add -= nums[left++];}if (add == sum - x) {ans = Math.max(ans, right - left + 1);}}return ans < 0 ? -1 : n - ans;}
}

性能


文章转载自:

http://0rApwaUJ.qwbLs.cn
http://iiaoz8AQ.qwbLs.cn
http://K5FlbGNF.qwbLs.cn
http://eB8cXaC2.qwbLs.cn
http://JKAeQpCc.qwbLs.cn
http://o7RyeZHt.qwbLs.cn
http://KdAcMxuy.qwbLs.cn
http://G3LdRfkt.qwbLs.cn
http://rBK60LE0.qwbLs.cn
http://uFlCLKuo.qwbLs.cn
http://9JVUhg94.qwbLs.cn
http://4ZSptdwg.qwbLs.cn
http://ZK9JtBnN.qwbLs.cn
http://zZAxZX5f.qwbLs.cn
http://qwYgmSP3.qwbLs.cn
http://hxsXI0FC.qwbLs.cn
http://jiLGianh.qwbLs.cn
http://Ktfqstgz.qwbLs.cn
http://U6crthvG.qwbLs.cn
http://NUvOFD50.qwbLs.cn
http://Ly90airm.qwbLs.cn
http://G65LhqGR.qwbLs.cn
http://JXzBwY5p.qwbLs.cn
http://VdGMj0Sf.qwbLs.cn
http://a2YIo8Js.qwbLs.cn
http://QIDpbvFS.qwbLs.cn
http://ozQoAM1W.qwbLs.cn
http://7OitQz8p.qwbLs.cn
http://cPukJGlE.qwbLs.cn
http://QCGTiDDz.qwbLs.cn
http://www.dtcms.com/a/379494.html

相关文章:

  • 二十二、包管理与发布 (Cargo 进阶)
  • WAF如何为你的网站筑起智能防线?
  • 【Leetcode】高频SQL基础题--1327.列出指定时间段内所有的下单产品
  • 数据结构与算法:绪论和线性表
  • ToDesk企业版高效助力睿尔博汽车信息服务!
  • 基于RFID技术的宠物自动喂食器方案
  • Java 异常体系全解析
  • Linux 系统资源负载控制脚本:CPU 内存一键管理(后台常驻版)
  • rook-ceph登录报错Invalid credentials
  • 《RocketMQ核心架构与实战解析》
  • C语言---常量
  • 豆包・图像创作模型 Seedream 4.0 正式发布!
  • OCSP(Online Certificate Status Protocol,在线证书状态协议)
  • 深度学习(六):代价函数的意义
  • 【lite.ai.toolkit】【深度学习】【Ubuntu 20.04】C++ 轻量级AI模型工具箱的编译、安装、使用教程
  • 远程创意协作新方式:cpolar助力Drawnix跨地域团队协作
  • 深入理解 Linux 内核进程管理
  • 企业跨区域组网新解:SD-WAN技术打造安全稳定网络体系
  • 单身杯2 web
  • 《Learning Langchain》阅读笔记12-RAG(8):RAG的优化策略
  • daily notes[43]
  • LRU缓存详解:用C语言实现高效数据管理
  • 灵码产品演示:软件工程架构分析
  • 硬件电路-陀机
  • swiper插件的使用
  • mysql的各种锁
  • Java大厂面试实录:AIGC与虚拟互动场景下的微服务与AI落地(附知识详解)
  • Kafka 学习笔记
  • 机械零件极限应力线图
  • 萤石安全生产监管解决方案:构建企业安全智能化防护网