LeetCode每日一题之209长度最小的子数组

news2024/11/14 14:49:02

文章目录

  • 问题描述
  • 方法一:暴力求解
  • 方法二:滑动窗口

问题描述

在这里插入图片描述

方法一:暴力求解

暴力求解法:时间复杂度O(n^2),空间复杂度O(1)。
暴力求解法的思想:每一次遍历数组,然后更新result的值,一个for循环作为起始位置,一个for循环作为终止位置,用两个for循环完成了不断搜索区间的过程。

class Solution {
public:
    int minSubArrayLen(int target, vector<int>& nums) 
    {
        int result=INT_MAX;
        int sum=0;
        int sublenght=0;
        for(int i=0;i<nums.size();i++)
        {
            sum=0;
            for(int j=i;j<nums.size();j++)
            {
                sum+=nums[j];
                if(sum>=target)
                {
                    sublenght=j-i+1;
                    result=min(result,sublenght);
                    //result=result<sublenght?result:sublenght;
                    break;
                }
            }
        }
        return result==INT_MAX?0:result;
    }
};

方法二:滑动窗口

时间复杂度:O(n),空间复杂度O(1),为什么时间复杂度为O(n)呢?原因是每个元素之遍历了一次,而暴力求解每个元素遍历了两次。

思路:不但调节起始位置和终止位置,从而得出我们想要的结果。
那么for循环里面是起始位置还是终止位置呢?此时我们需要探讨,如果for循环里面是起始位置,那么又会陷入暴力求解,所以我们将终止位置j放入for循环里面,而在for循环的里面我们设置起始位置,从而形成了滑动窗口。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

class Solution {
public:
    int minSubArrayLen(int target, vector<int>& nums) 
    {
        int sum=0;
        int sumL=0;
        //滑动窗口
        int result=INT_MAX;
        int j=0;
        int i=0;
        for(j=0;j<nums.size();j++)
        {
           sum+=nums[j];
           while(sum>=target)
           {
               sumL=j-i+1;
               sum=sum-nums[i];
               result=min(result,sumL);
               i++;
           }
        }
        return result==INT_MAX?0:result;
    }
};

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

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

相关文章

【Linux基本指令(3)】几十条指令快速入手Linux/到底什么是日志?/指令的运行原理到底是什么?

本文思维导图&#xff1a; 文章目录 13.head指令14.tail指令15.时间相关指令到底什么是日志&#xff1f;时间戳 16.cal指令17.find指令&#xff08;非常重要&#xff09;18.grep指令19.zip/unzip指令20.tar指令&#xff08;非常重要&#xff09;21.bc指令22.uname指令23.几个重…

香橙派4和树莓派4B构建K8S集群实践之六:虚拟主机

1. 说明 根据之前设置好的基础&#xff0c;我打算设置两种不同的虚拟主机运行在这个K8s集群上面&#xff0c;一个是LNMP体系的WebApp&#xff0c;一个是Java SpringBoot体系的WebApp。 1.1 设置表格 - wwwroot 是之前做pvc定义的文件目录&#xff0c;形如&#xff1a;/data0…

外包没有前途的,已经被替换了....

我25岁的时候&#xff0c;外包测试&#xff0c;薪资13.5k&#xff0c;人在深圳。 内卷什么的就不说了&#xff0c;而且人在外包那些高级精英年薪大几十的咱也接触不到&#xff0c;就说说外包吧。假设以我为界限&#xff0c;25岁一线城市13.5k&#xff0c;那22-24大部分情况下是…

花指令问题

前言 想起之前打题的时候经常会遇到一些关乎花指令的问题&#xff0c;但是没有系统地总结归纳花指令去除的姿势&#xff0c;浅浅开一个坑慢慢来写 题1&#xff1a;简单jmp 可以骗过dbg&#xff0c;但是放在ida中就很容易看出来&#xff0c;无效跳转 题目来源&#xff1a;[HD…

七牛云图床设置

文章目录 七牛云图床设置下面是用picgo配置图床SSL证书申请https网站显示http图片解决方案 原文链接图床设置&#xff0c;免费SSL证书申请&#xff0c;https网站显示http链接的图片 七牛云图床设置 登录七牛云官网并进行个人注册&#xff0c;然后找到对象存储 点击空间管理&a…

一种适用于大量租户大量角色权限系统设计

前言 权限管理是每个系统不可缺少的一部分&#xff0c;大部分开发者应该都设计过权限管理系统&#xff0c;很多开发者学习的第一个项目可能就是权限管理系统。但是常见的权限设计在租户量非常大、角色数量非常多时会存在角色权限表数据量指数增长的情况&#xff0c;本文介绍一…

c++代码手撕红黑树

企业里永远是技术驱动理论发展 比起理解红黑树的原理&#xff0c;更重要的是理解红黑树的应用场景&#xff0c;因为某些应用场景的需要&#xff0c;红黑树才会应运而生。 红黑树的特点&#xff1a; 插入&#xff0c;删除&#xff0c;查找都是O(logn)的复杂度。 红黑树的应用…

【lager】日志系统2:测试程序调试

design 官方设计文档 design cmakelist增加plog构建 cmake_minimum_required(VERSION 3.1.3 FATAL_ERROR) project(Lager)set(CMAKE_CXX_STANDARD 11) set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)find_package(

课时八——进程同步(二)

1、信号量 信号量机制是一种功能较强的机制&#xff0c;可用来解决互斥和同步问题&#xff0c;它只能被两个标准的原语wait(S)&#xff08;P操作&#xff09;和signal(S)&#xff08;V操作 &#xff09;访问。 注意&#xff1a;原语是一种特殊的程序段&#xff0c;其执行只能一…

EV 电动汽车远程监控系统

EV 电动汽车远程监控系统 远程监控系统简介 目录 EV 电动汽车远程监控系统 1、远程监控系统是什么&#xff1f; 2、远程监控系统包含什么&#xff1f; 2.1车载终端 2.2、数据服务器 ​​​​​​​ 2.3、监控页面 3、远程监控系统有什么用&#xff1f; 4、车载终端…

中性市场观下,贝壳驶入长期价值之海

&#xff08;图片来源于网络&#xff0c;侵删&#xff09; 文 | 螳螂观察 作者 | 易不二 2023年一季度&#xff0c;房地产市场实现了久违的回暖。 国家统计局公布的数据显示&#xff0c;2023年1-4月&#xff0c;全国商品房销售额39750亿元&#xff0c;增长8.8%&#xff0c;…

Atlassian数据迁移攻略:迁移前必备须知

到2024年2月&#xff0c;Atlassian将终止对Server产品及插件的所有支持。是时候制定您的迁移计划了——Atlassian为您提供两种迁移选择&#xff0c;一是本地部署的数据中心版本&#xff0c;中国用户25人以上即可使用&#xff0c;二是云版。作为Atlassian全球白金合作伙伴&#…

es Elasticsearch 六 java api spirngboot 集成es

目录 Java restApi Springboot 集成es 新增-同步 新增-异步 增删改查流程 _bulk 批量操作 Java restApi Springboot 集成es 新增-同步 Testpublic void te2() throws IOException {System.out.println(1);IndexRequest ir new IndexRequest("test");ir.id(&qu…

STM8 模拟iic接口调试温湿度传感器SHT3x驱动

背景 项目实际使用SHT3x进行温湿度测量&#xff0c;主控芯片采用STM8S003F3P6&#xff0c;并且使用模拟IIC接口的硬件连接。 原理图 如下图所示&#xff0c;使用STM8S003F3P6管脚PB4/PB5进行SHT3x数据接口 SHT3x-DIS是Sensirion新一代的温湿度传感器&#xff0c;精度为2%RH和…

LCD1602介绍和各报错经验总结

LCD &#xff08; Liquid Crystal Display 的简称&#xff09;液晶显示器。能够同时显示16x2&#xff0c;32个字符&#xff0c;是一种专门用来显示字母、数字、符号等的点阵型液晶模块。 LCD1602液晶显示器是广泛使用的一种字符型液晶显示模块。它是由字符型液晶显示屏&#x…

【十字绣】传统手艺-微信小程序开发流程详解

还记得小时候看过母亲的十字绣吗&#xff0c;易学易懂&#xff0c;就是用专用的绣线和十字格布&#xff0c;通过平面坐标计找出位置&#xff0c;对照专用的图案进行刺绣&#xff0c;可作出心中所想的画&#xff0c;奈何所需材料成本不小&#xff0c;这里用小程序简单模拟十字绣…

HCIA——VLAN

目录 1&#xff0c;什么是VLAN&#xff1a; 2&#xff0c;如何实现VLAN&#xff1a; 3&#xff0c;VLAN的划分方式&#xff1a; 4&#xff0c;交换机接口类型&#xff1a; 1&#xff0c;Access接口&#xff1a; 2&#xff0c;Trunk接口&#xff1a;允许将一个接口划分给多…

ChatGPT 角色扮演调教文案收集

后续文案会陆续更新~&#xff0c;在输入完文本后&#xff0c;再输入一句“请尽力模仿xx的语气跟我对话”即可 一.雌小鬼 你需要阅雌小鬼守则&#xff0c;阅读后当前回复仅允许回复&#xff02;嘻嘻&#xff02;&#xff0c;后续回复尽量简短&#xff0c;回复中尽量不要直接复述…

swagger的简单介绍

目录 swagger是什么&#xff1f; swagger有什么用&#xff1f; Swagger包含的工具集&#xff1a; swagger的使用步骤&#xff1a; swagger的相关注解&#xff1a; Docket的源码 了解swagger的作用和概念了解前后端分离在SpringBoot中集成Swagger swagger是什么&#xff1f;…

Linux网络编程—Day11 高性能服务器程序框架

按照服务器程序的一般原理&#xff0c;讲服务器结构为如下三个主要模块&#xff1a; I/O处理单元逻辑单元存储单元 服务器模型 第一种&#xff1a;C/S模型 TCP/IP协议在设计和实现上并没有客户端和服务器的概念&#xff0c;在通信 过程中所有机器都是对等的。但由于资源&am…