力扣-将x减到0的最小操作数
1.题目描述
2.题目链接
1658. 将 x 减到 0 的最小操作数 - 力扣(LeetCode)
3.题目分析
1)正面求解困难
题目要求我们每次都从最左边或者最右边取一个数,使x-元素的值,并在数组中移除该元素。最后返回的最小操作数也就是移除数组元素的最小个数。
也就是如下:
其中a和b代表对应子串的元素和。
这道题如果我们从正面求解,是非常困难的。因为他有可能是从最左边移除,也有可能从最右边移除,并且要求a+b=x,还要求最小值,情况是非常多的。
2)正难则反
既然正面求解困难,那么我们反过来换一种思路,从反面求解,也就是求和为sum-x的子串的最长长度:
其中sum表示数组所有元素和。
这就和我们前面做过的一道滑动窗口的oj题目非常相似了: 力扣-长度最小的子数组-CSDN博客。
4.代码解答
class Solution {public int minOperations(int[] nums, int x) {int length=-1,sum=0,temp=0;for(int a:nums)sum+=a;int target=sum-x;if(target<0){return -1;}for(int left=0,right=0;right<nums.length;right++){temp+=nums[right];while(temp>target&&left<=right){temp-=nums[left++];}if(temp==target){length=Math.max(length,right-left+1);}}return length==-1?-1:nums.length-length;}
}
5.代码细节
1)length的初始值
int length=-1,sum=0,temp=0;
题目中要求如果没有找到符合条件的字串,就返回-1,所以我们通过定义length的初始值为-1,在结合三位运算符进行返回:
return length==-1?-1:nums.length-length;
2)while循环的条件
while(temp>target&&left<=right){temp-=nums[left++];}
应该是left<=right而不是left<=right,确保窗口可以收缩到空(left > right),从而正确处理所有边界情况。这时中间的子串为空,也就是说,此时整个数组的元素和是题目中给出的x,要返回的就是整个数组的长度。
这是滑动窗口算法中常见的边界陷阱,需要特别注意!
相关文章:

力扣-将x减到0的最小操作数
1.题目描述 2.题目链接 1658. 将 x 减到 0 的最小操作数 - 力扣(LeetCode) 3.题目分析 1)正面求解困难 题目要求我们每次都从最左边或者最右边取一个数,使x-元素的值,并在数组中移除该元素。最后返回的最小操作数…...
Web前端开发: 什么是JavaScript?
什么是JavaScript? JavaScript 是一种广泛应用于网页开发的脚本语言,主要用于为网站添加交互性和动态功能。 1. 核心作用 前端开发:控制网页行为,例如点击按钮弹出提示、表单验证、动态加载内容等。 后端开发:通过 No…...

三、【数据建模篇】:用 Django Models 构建测试平台核心数据
【数据建模篇】:用 Django Models 构建测试平台核心数据 前言我们要设计哪些核心数据?准备工作:创建 Django App开始设计数据模型 (Models)1. 通用基础模型 (可选但推荐)2. 项目模型 (Project)3. 模块模型 (Module)4. 测试用例模型 (TestCase…...
【JAVA】比较器Comparator与自然排序(28)
JAVA 核心知识点详细解释 Java中比较器Comparator的概念和使用方法 概念 Comparator 是 Java 中的一个函数式接口,位于 java.util 包下。它用于定义对象之间的比较规则,允许我们根据自定义的逻辑对对象进行排序。与对象的自然排序(实现 Comparable 接口)不同,Comparat…...

shp2pgsql 导入 Shp 到 PostGIS 空间数据库
前言 ❝ shp2pgsql是PostGIS自带的命令行工具,用于将Shapefile文件声称SQL脚本导入到PostGIS空间数据库。 1. 安装 PostGIS 通过Application Stack Builder或者下载单独的PostGIS包进行安装。而shp2pgsql则是与PostGIS工具集成在一起,无需单独下载。该命…...

word设置如“第xx页 共xx页”格式的页码
问题1: 为word文档设置如“第xx页 共xx页”格式的页码。 解决方法: 1、鼠标双击页脚位置进入页脚编辑模式; 2、在页脚处输入“第 页 共 页”内容并居中; 3、将光标放在“第 页”之间并插入“Page”,执行操作“…...

DL00912-基于自监督深度聚类的高光谱目标检测含数据集
在科研的道路上,数据的获取与分析无疑是成功的关键。对于从事高光谱数据研究的你,我们为您带来了一款革命性的工具——基于自监督深度聚类的高光谱目标检测系统。 完整代码数据集见文末 这款系统通过最先进的自监督学习技术,结合深度聚类算…...
PostgreSQL架构
目录 一、PostgreSQL核心特性与优势 1.PostgreSQL简介 2.PostgreSQL的核心特点 (1)开源与自由 (2)高度符合SQL标准 (3)丰富的数据类型 (4)事务与并发控制 (5&…...
文章记单词 | 第111篇(六级)
一,单词释义 damage /ˈdmɪdʒ/ v./n. 损害;损坏;损失harbour /ˈhɑːbə(r)/ n. 港口;港湾 v. 庇护;窝藏(美式拼写:harbor)gasp /ɡsp/ v. 喘气;喘息 n. 喘息&#x…...
在Java中,将Object对象转换为具体实体类对象
在Java中,将Object对象转换为具体实体类对象可以通过以下几种方法实现: 1.使用instanceof关键字进行类型检查和转换: 首先,使用instanceof关键字检查Object对象是否为目标实体类的类型。 如果是,则进行强制类型…...

Runtipi - 开源个人家庭服务器管理工具
项目功能:家庭服务器管理 ▎项目介绍: 一个开源的个人家庭服务器管理工具,旨在简化在单一服务器上管理和运行多个服务的过程。 它基于 Docker 构建,提供了一个简单的 Web 界面,用户可以通过该界面轻松添加和管理服务…...
Vue3和React中插件化设计思想
Vue 3 和 React 都广泛支持插件化设计思想,但因为它们的架构和理念不同,插件化的实现方式也不尽相同。以下分别详细讲解这两者中如何实现插件化: 🟩 一、Vue 3 中的插件化实现 Vue 3 继承了 Vue 2 的插件机制,同时增强…...
基于ResNet的医学影像辅助诊断系统
源码下载地址: https://download.csdn.net/download/shangjg03/90873910 1. 简介 医学影像辅助诊断系统是利用计算机视觉和深度学习技术,帮助医生分析医学影像(如X光、CT、MRI等)并提供诊断建议的系统。本教程将开发一个基于ResNet的胸部X光肺炎检测系统。 2. 准备工作...

HJ106 字符逆序【牛客网】
文章目录 零、原题链接一、题目描述二、测试用例三、解题思路四、参考代码 零、原题链接 HJ106 字符逆序 一、题目描述 二、测试用例 三、解题思路 基本思路: 考虑到可能会有多个空格,使用使用 getline 函数直接读取一行。 如果可以直接打印的…...

力扣HOT100之二叉树: 236. 二叉树的最近公共祖先
果然,这道题二刷还是不会做,回去看卡尔视频了。结合灵神的题解,我对这道题有了一些新的理解。 首先这道题还是用递归来做,由于我们需要计算两个节点的最近公共祖先,一定是从下往上来遍历,只有先判断左右子树…...

腾讯音乐一面
1、自我介绍项目(省略) 2、为什么存储要从TiDB迁移到Mysql? TiDB 迁移至 MySQL 核心原因总结: 成本优化 TiDB 需多节点集群(PD/TiKV/TiDB Server),硬件、运维及学习成本高。中小业务(…...
【PhysUnits】4.4 零类型(Z0)及其算术运算(zero.rs)
一、源码 该代码定义了一个类型系统中的零类型Z0,并为其实现了基本的算术运算(加法、减法、乘法、除法)。这是一个典型的类型级编程示例,使用Rust的类型系统在编译期进行数学运算。 //! 零类型(Z0)及其算术运算实现 //! //! 本…...

Pluto实验报告——基于2ASK的简易的通信系统
一、实验目的 1. 熟悉并掌握PLUTO SDR 主动学习模块的使用; 2.通过matlab 编码与adalm pluto 相配合达成一个简易的通信系统,并能 够传输一些较为简单的信息。 二、实验原理 2ASK 调制原理: 振幅键控是指利用载波的振幅变化来传递数字基带信…...
Python排序函数全面指南:从基础到高级
文章目录 Python排序函数全面指南:从基础到高级1. 两种主要排序方式2. 基本参数详解2.1 key参数:自定义排序规则2.2 reverse参数:控制排序方向 3. 高级排序技巧3.1 多级排序3.2 稳定排序 4. 性能考虑5. 特殊排序场景5.1 对自定义对象排序5.2 …...

深入了解redis的哈希槽的知识
目录 1、哈希算法分类 1.1、简单哈希算法 1.2、一致性哈希算法 1、原理: 2、解决问题 3、数据倾斜问题 4、虚拟节点 2. 哈希槽 2.1、介绍 2. 2、作用 1、数据分片(Sharding) 2、高可用性(HA) 3…...

农业机械化、电气化和自动化知网英文普刊:1天录用,2周见刊发表!
CSP科学出版社,旨在通过为研究人员提供最佳环境来发表、参考、阅读和引用他们的作品,从而为科学界服务。现已与科检易学术达成出版战略合作,现在联合共同出版高质量学术水平的期刊,为方便广大科研学者投稿方便,现已经建…...
java将rtsp转成flv在浏览器播放
1、添加maven依赖 <dependency> <groupId>io.github.javpower</groupId> <artifactId>rtsp-converter-flv-spring-boot-starter</artifactId> <version>1.5.9.2</version> </dependency> 2、在配置application.ymlÿ…...

Docker-Compose使用自定义网桥后在OpenWrt系统中容器无法访问网络解决方案
Docker-Compose使用自定义bridge网桥后在OpenWrt系统中容器无法访问网络解决方案 示例compose描述文件如下,注意最后网络配置: # docker-compose --env-file .env.yoko.prod.local up -d services:...postgres:image: kuluseky/postgres-zhparser-post…...

界面组件DevExpress WPF中文教程:Grid - 行和卡片
DevExpress WPF拥有120个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…...

Qt enabled + geometry 属性(2)
文章目录 enabled属性可用与禁用的概念API接口代码演示 阐述说明1. 先简单描述下要如何演示出上面两个接口的效果(思路)2. 事先规范按钮对象的命名3. 定义两个按钮对象的槽函数 动图演示效果4. widget.cpp geometry属性预备知识API接口上下左右移动 ta…...

Llamaindex自学笔记(完)
Llamaindex框架主要做RAG,工作流用LangGraph做 换源: -i https://pypi.mirrors.ustc.edu.cn/simple/环境搭建: conda create -n llamaindex python3.12 conda activate llamaindexpip install llama-index pip install llama-cloud-servic…...
安全生态与职业跃迁
18. 网络安全产业生态 18.1 全球安全产业链解析 核心参与者角色 安全厂商: 终端安全:CrowdStrike、SentinelOne(EDR/XDR) 网络防御:Palo Alto Networks、Fortinet(NGFW/SASE) 云安全&#…...

飞书知识问答深度测评:企业AI应用落地的“范本级”产品
前言 当 AI 逐渐从技术前沿走向日常办公,我们最常听到的一个词是“效率提升”。但真正能做到降本增效、让企业员工切实受益的 AI 产品,仍属少数。尤其是在组织内部知识管理这一块,大多数企业仍停留在“搜索靠关键词、记录靠记忆、协作靠问人…...

draw.io的基础与进阶使用指南
前言 一、Draw.io 简介 Draw.io 是一款功能强大的绘图工具,支持在线使用和本地安装。它提供了丰富的模板和形状元素,能够绘制流程图、UML 图、甘特图、网络图等多种图形。Draw.io 的文件格式支持可编辑的矢量图和位图,方便后续修改 draw.io的…...
clang的介绍与使用
一、Clang 简介 Clang 是一个开源的 C/C/Objective-C 编译器前端,基于 LLVM(Low Level Virtual Machine) 项目开发。它被设计为替代传统 GCC 的现代化编译器,具有以下特点: 高性能:编译速度快,…...