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

算法入门:专题攻克二---滑动窗口(将x减到0的最小操作数,更新中。。。)

🎬 胖咕噜的稞达鸭:个人主页

🔥 个人专栏: 《数据结构》《C++初阶高阶》《算法入门》

⛺️技术的杠杆,撬动整个世界!

在这里插入图片描述

将 x 减到 0 的最小操作数
1658. 将 x 减到 0 的最小操作数
在这里插入图片描述

  1. 题目解析:

在整数数组nums中,每当移除数组最左边或者最右边的元素,就要从x中减去该元素的值,将x减到0,并且返回最小的操作数字,也就是从原数组中移除了多少个数字可以将x减到0,移除的数字越少就返回,改动原数组改动最小的返回。
给一个例子:nums=[ 1 , 1 , 4 , 2 , 3 ] ,此时x=5,移除数组索引为0的元素1,x-1=4,x现在还没被减到0,移除前两个元素和最后一个元素,x=0,此时改动了3个元素,返回3;还可以移除后两个元素,x = 0,此时只改动了两个元素,返回2.题目要求要返回最小的操作数,此时返回2.
如果数组中找不到可以使得x减到0的(如数组:nums = [ 5 , 6 , 7 , 8 , 9 ],返回-1即可。

  1. 算法原理:

同一个数组,操作数最小,x减去的数字越少就满足题目的要求,x中减去的数字越少也就意味着留下来的数字越多,也就是说最后比较的是,返回ret,ret的最大值即可。可以将所有数字都相加,最终结果放到sum中,如果所有元素的和等于sum-x,就可以计算此时最长的子数组的长度len.
可以先用暴力枚举的方法,用双指针left,right从数组索引为0的位置开始遍历,right从数组索引为0的位置开始向后,每遍历一个数字加到Add中。当Add大于sum-x的时候,意味着left该出窗口了,如果Add等于sum-x的时候,就是我们想要的结果,将ret更新,从更新前的ret到right-left+1的ret选取大的进行更新。最后返回的是数组的元素个数减去ret,本身要求的就是返回操作的最小数字。ret中的数字越多,操作的数字就越少。
还有一种情况:如果数组中找不到可以将x减为0的组合,返回-1.此时可以先将ret置为-1,初始化的时候置为-1,等到数组中有可以将x减为0的组合,再更新ret,这也是一个小细节。

  1. 现在来写代码。

第一步:
将数组中所有数字相加sum,我们要找的组合一定是等于sum-x ;
第二步:初始化ret,如果数组中没有组合可以将x减为0,返回-1;有就执行下面的操作;
第三步:定义双指针,进入窗口(当right一个一个遍历加到Add中,Add<sum-x);出窗口(当Add > sum-x,此时left需要向后移动一个位置,表示出窗口);再次判断,此时的left,right的区间内数字相加是不是Add==sum-x。如果是就更新ret,ret=right-left+1和ret(原始)的最大值。
第四步:返回。

class Solution {
public:int minOperations(vector<int>& nums, int x) {int sum=0;for(int a:nums) sum+=a;int target=sum-x;if(target<0) return -1;int ret=-1;for(int left=0,right=0,Add=0;right<nums.size();right++){Add+=nums[right];while(Add>target) {Add -= nums[left++]; }if(Add == target) {ret =max(ret,right-left+1);}}if(ret == -1)return ret=-1;else {return nums.size()-ret;}}
};
http://www.dtcms.com/a/537163.html

相关文章:

  • 如何知道网站是否被k找能做网站的
  • __金仓数据库平替MongoDB实战:医疗手术场景下的国产化替代方案__
  • 深圳有什么网站在html中做网站 视频
  • 比价网站源码整站程序河北省住房城乡建设局网站首页
  • 【从零开始开发远程桌面连接控制工具】02-远程控制服务端实现详解
  • 硬件电路LRC串联谐振分析
  • 做网站卖赚钱吗哪里有免费的网站域名
  • redis主从集群及其原理(优化)
  • 2025年10月27日 AI大事件
  • Logstash 多 Pipeline 配置
  • 网站建设需要注意事项深圳龙华医院网站建设
  • 云栖实录 | 实时计算 Flink 全新升级 - 全栈流处理平台助力实时智能
  • 网页建站怎么设置如何在电脑上建网站
  • 马上飞做的一些网站汝州市文明建设网站
  • 集群环境安装与部署 Hadoop
  • 【乱七八糟】【1. fs.inotify.max_user_watches 参数】
  • C++运算符重载与友元函数:理解输入输出流的魔法
  • Android Camera 从应用到硬件之- 枚举Camera - 1
  • 【Frida Android】基础篇13:Frida-Trace 基础简介——从命令到脚本的动态追踪入门
  • 使用electron-vite生成一个桌面应用以及引入必要插件
  • 龙岗网站设计机构网络培训平台建设方案
  • 运动想象 (MI) 分类学习系列 (19) : EEG-TransNet
  • io游戏网站重庆市建设项目环境影响评价网站
  • 怎样做静态网站做网站开发用哪门语言
  • springAI实现ai大模型+传统应用双剑合璧- Function Calling
  • 电子商务网站开发设计适合前端新手做的网页
  • 济宁市建设局网站wordpress hover
  • 熵平衡机制在子种群迁移中的具体实现
  • 记录一下Linux 6.12 中 cpu_util函数的作用
  • 做淘宝内部优惠券网站要钱么网站制作费用价格表