【算法专题突破】滑动窗口- 将 x 减到 0 的最小操作数(12)

news2024/12/23 13:02:20

目录

1. 题目解析

2. 算法原理

3. 代码编写

写在最后:


1. 题目解析

 题目链接:1658. 将 x 减到 0 的最小操作数 - 力扣(Leetcode)

这道题并不难理解,其实就是在数组里找值,直到把x减成0,

这里要注意的是,题目要求移除的之能是数组最左边或者最右边的值,

然后返回最小的操作数即可。

如果直接从两边去找可能不太好解决,

我们可以把这个问题转化成:

找出最长的中间子数组,这样我们就能得到最小的操作数了。

2. 算法原理

这道题可以用滑动窗口来解决,

具体思路是这样的:

数组的总和 - x = target ,这个target值就是中间数组的值,

我们维护一个窗口,不断往窗口里面进值,

如果窗口总值 < target,就继续进窗口

如果 == target,那就记录操作次数,

如果 > target, 就出窗口。

来看代码:

3. 代码编写

class Solution {
public:
    int minOperations(vector<int>& nums, int x) {
        int left = 0, right = 0, sum = 0, len = INT_MAX, target = -x;
        for(auto e : nums) target += e;
        if(target < 0) return -1;
        int n = nums.size();
        while(right < n) {
            sum += nums[right++];
            while(left < n && sum > target) sum -= nums[left++];
            if(sum == target) len = min(len, n - (right - left));
        }
        return len == INT_MAX ? -1 : len;
    }
};

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果感到有所收获的话可以给博主点一个哦。

如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1006696.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电压放大器和电荷放大器的区别是什么

电压放大器和电荷放大器一样吗&#xff1f; 电压放大器和电荷放大器不是一样的。你要明白&#xff0c;电压放大器是将输入信号的电压进行放大的装置&#xff0c;通常直接连接到信号源&#xff0c;不需要电容来耦合信号。而电荷放大器是将输入信号的电荷量进行放大的装置&#x…

更安全、更清晰、更高效——《C++ Core Guidelines解析》

由资深技术专家Rainer Grimm撰著的《C Core Guidelines解析》&#xff0c;从内容上说&#xff0c;选取了现代C语言最核心的相关规则;从篇幅上说&#xff0c;对软件工程师非常友好。以“八二原则”看&#xff0c;这个精编解析版是一-个非常聪明的选择。同时&#xff0c;Rainer G…

软件报错提示vcomp140.dll丢失怎么办?这5个修复方法可帮到你

随着科技的飞速发展&#xff0c;电脑已经成为人们日常生活和工作中不可或缺的重要工具。然而&#xff0c;在使用电脑的过程中&#xff0c;难免会遇到一些问题&#xff0c;如电脑报错 vcomp140.dll 丢失。这给许多用户带来了困扰&#xff0c;那么&#xff0c;究竟该如何解决这个…

『吴秋霖赠书活动 | 第二期』《ChatGPT原理与实战》

文章目录 1. 写在前面2. Tansformer架构模型3. ChatGPT原理4. 提示学习与大模型能力的涌现4.1 提示学习4.2 上下文学习4.3 思维链 5. 行业参考与建议5.1 拥抱变化5.2 定位清晰5.3 合规可控5.4 经验沉淀 千模大战正酣&#xff0c;吃透ChatGPT是制胜关键&#xff01; 声明&#x…

Python使用pygame设计一幅冷冷的雪落动图

文章目录 基础代码实现雪花飘落动图更换雪景背景转换GIF动图完整实现代码推荐阅读 看到很多小伙伴使用python实现了很多动态的效果&#xff0c;非常漂亮。 闲来无事&#xff0c;也参考做法&#xff0c;自己做了一幅雪落动图。过程中&#xff0c;遇到了一些问题&#xff0c;花了…

《Docker 容器化的艺术:深入理解容器技术》

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f405;&#x1f43e;猫头虎建议程序员必备技术栈一览表&#x1f4d6;&#xff1a; &#x1f6e0;️ 全栈技术 Full Stack: &#x1f4da…

Mysql免安装版的root密码是多少

免安装版的Mysql在初始化后root是没有密码的 1、下载免安装版Mysql 下载链接&#xff1a;MySQL :: Download MySQL Community Server 下载后解压 里面的目录是这样的 2、添加配置文件和系统环境 在系统变量中添加Mysql的bin的path路径 在Mysql的目录下添加my.ini配置文件 [my…

苏宁suningAPI接入说明获得suning商品详情

API地址:https://o0b.cn/anzexi 参数说明 通用参数说明 version:API版本key:调用key,测试key:test_api_keyapi_name:API类型[item_search,seller_info]cache:[yes,no]默认yes&#xff0c;将调用缓存的数据&#xff0c;速度比较快result_type:[json,xml,serialize,var_export]…

新零售商城模式与传统电商和零售的痛点的对比

新零售是一种以消费者体验为中心的数据驱动的泛零售形态&#xff0c;它通过运用大数据、人工智能等先进技术手段&#xff0c;对商品的生产、流通与销售过程进行升级改造&#xff0c;进而重塑业态结构与生态圈&#xff0c;并对线上服务、线下体验以及现代物流进行深度融合的零售…

【Linux】Linux常用命令60条(含完整命令语句)

Linux是一个强大的操作系统&#xff0c;它提供了许多常用的命令行工具&#xff0c;可以帮助我们用于管理文件、目录、进程、网络和系统配置等。以下是一些常用的Linux命令&#xff1a; 1. ls&#xff1a;列出当前目录中的文件和子目录 ls2. pwd&#xff1a;显示当前工作目录的…

什么是 BSD 协议?

BSD开源协议是一个给于使用者很大自由的协议。可以自由的使用&#xff0c;修改源代码&#xff0c;也可以将修改后的代码作为开源或者专有软件再发布。当你发布使用了BSD协议的代码&#xff0c;或者以BSD协议代码为基础做二次开发自己的产品时&#xff0c;需要满足三个条件&…

解决 SLF4J: Class path contains multiple SLF4J bindings.

1. 异常现象 启动springboot项目&#xff0c;抛出警告信息&#xff1a; SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/Users/quanll5/Documents/java_repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.j…

国内最佳的Respond替代品——SaleSmartly(ss客服)

如果响应工具最近让您失望&#xff0c;那么可能是时候开始检查一些响应替代方案以保持您的客服系统策略正常运行了&#xff01;选择正确的工具对于执行高性能的营销策略至关重要&#xff0c;该策略将为您提供最佳的投资回报率 &#xff08;ROI&#xff09;。 Respond也是一个得…

C++算法进阶系列之倍增算法解决求幂运算

1. 引言 学习倍增算法&#xff0c;先了解什么是倍增以及倍增算法的优势。如果面前有一堆石子&#xff0c;要求计算出石子的总数量。 这是一个简单的数数问题&#xff0c;可以&#xff1a; 一颗石子一颗石子的数。两颗石子两颗石子的数。三颗石子三颗石子的数。或者更多颗石子…

一志愿复录比接近1:1,计算机专业招生名额近百人,杭州师范大学考情分析

杭州师范大学 考研难度&#xff08;☆☆&#xff09; 内容&#xff1a;23考情概况&#xff08;拟录取和复试分析&#xff09;、院校概况、23初试科目、23复试详情、各专业考情分析、各科目考情分析。 正文893字预计阅读&#xff1a;3分钟 2023考情概况 杭州师范大学计算机相…

TRICONEX 4351B数字量输入模块

TRICONEX 4351B是一种数字量输入模块&#xff0c;通常用于工业控制和安全系统中。这个模块的主要功能和特点可能包括以下方面&#xff1a; 数字量输入&#xff1a;4351B模块允许连接多个数字量输入信号。这些输入通常用于监测开关状态、传感器信号或其他数字逻辑信号。 高密度…

FPGA-结合协议时序实现UART收发器(一):UART协议、架构规划、框图

FPGA-结合协议时序实现UART收发器&#xff08;一&#xff09;&#xff1a;UART协议、架构规划、框图 记录FPGA的UART学习笔记&#xff0c;以及一些细节处理&#xff0c;主要参考奇哥fpga学习资料。 本次UART主要采用计数器方法实现&#xff0c;实现uart的稳定性发送和接收功能…

利用微信二维码来实现中秋节快乐

环境准备&#xff1a; 1、python环境&#xff1b; 2、微信公众号申请&#xff1b; 实现思路是&#xff0c;将微信公众号的中秋节快乐的页面链接&#xff0c;隐藏到二维码里面&#xff0c;如果你发送的对方扫描了这个二维码&#xff0c;就会弹出对应的中秋节祝福页面。(*^▽^*…

【送书活动】畅销书《Kali Linux高级渗透测试》更新版速速查收~

文章目录 每日一句正能量前言本书概况读者对象赠书活动目录 每日一句正能量 其实&#xff0c;人生很多东西无所谓最好的&#xff0c;只要你认为值得就是最好。 前言 对于企业网络安全建设工作的质量保障&#xff0c;业界普遍遵循PDCA&#xff08;计划&#xff08;Plan&#xf…

【广州华锐互动】煤矿提升机作业VR互动实训平台

在煤矿行业中&#xff0c;安全性是无可忽视的首要任务。传统的煤矿工人培训方法&#xff0c;如理论课堂讲解、实地操作演示&#xff0c;尽管具有一定的效果&#xff0c;但往往无法真实地模拟出煤矿的复杂环境&#xff0c;工作人员在没有真正接触煤矿的情况下&#xff0c;很难理…