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

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

一、题目描述

二、解题思路

整体思路:

先求出数组中所有元素的和,减去x的值得到target,借助滑动窗口思想,求解出和为target的最长连续子串的长度,用数组的长度减去和为target的最长连续子串的长度,即为所求。

具体思路:

(1)求出数组中所有元素的和,算出target;

(2)处理边界情况,如果target为负数,表示sum<x,不合法,返回-1。如果target等于0,表示sum=x,直接返回n;

(3)借助滑动窗口思想,记录和为target的最长连续子串的长度;

<1>进窗口

//进窗口

sum+=nums[right];

<2>出窗口

//出窗口

while(sum>target){

       sum-=nums[left++];

}

<3>更新

 //更新

 if(sum==target) w_length=max(w_length,right-left+1);

(4)最后返回最小操作数。

三、代码实现

class Solution {
public:int minOperations(vector<int>& nums, int x) {int left,right,n=nums.size();int w_length=0;long long sum=0,target;//求所有元素的和,继而求出窗口targetfor(int i:nums) sum+=i;target=sum-x;//边界处理if(target<0) return -1;if(target==0) return n;//和为target的最长连续子串(滑动窗口)sum=0;for(left=0,right=0;right!=n;right++){//进窗口sum+=nums[right];//出窗口while(sum>target){sum-=nums[left++];}//更新if(sum==target) w_length=max(w_length,right-left+1);}return w_length==0?-1:(n-w_length);}
};

http://www.dtcms.com/a/343391.html

相关文章:

  • 同题异构解决leetcode第3646题下一个特殊回文数
  • Linux网络socket套接字(上)
  • linux 之virtio 的驱动框架
  • Motocycle 智能仪表盘
  • 白光干涉测量系统的复合相移三维重建和多视场形貌拼接的复现
  • 【自然语言处理与大模型】微调与RAG的区别
  • JavaScript基础语法five
  • 【Protues仿真】基于AT89C52单片机的数码管驱动事例
  • 力扣905:按奇偶排序数组
  • 2025-08-21 Python进阶4——错误和异常
  • 开发者中使用——控制台打印数据
  • 爬虫基础学习-基本原理和GET请求
  • JavaScript 基本语法
  • 智慧城市SaaS平台/市政设施运行监测系统之空气质量监测系统、VOC气体监测系统、污水水质监测系统及环卫车辆定位调度系统架构内容
  • 学习嵌入式之驱动
  • 3.2.6 混凝土基础施工
  • Chrome 内置扩展 vs WebUI:浏览器内核开发中的选择与实践
  • C++入门自学Day16-- STL容器类型总结
  • Git标准化开发流程
  • iOS 应用上架多环境实战,Windows、Linux 与 Mac 的不同路径
  • 详解开源关键信息提取方案PP-ChatOCRv4的设计与实现
  • 哈尔滨云前沿服务器租用类型
  • IoTDB如何解决海量数据存储难题?
  • 多模态大模型研究每日简报【2025-08-21】
  • Python学习-- 数据库和MySQL入门
  • 在线课程|基于SprinBoot+vue的在线课程管理系统(源码+数据库+文档)
  • 华为仓颉语言的函数初步
  • rust语言 (1.88) egui (0.32.1) 学习笔记(逐行注释)(三) 文本标签、按钮、文本框基本使用
  • Rust 入门 模块 (二十二)
  • 意象驱动下的感知与认知信息结构:上古汉语同源词研究视角——基于黄易青《上古汉语同源词意义系统研究》的理论框架