【LeetCode】209.长度最小的子数组

news2024/11/24 9:29:23

209. 长度最小的子数组

在这里插入图片描述

思路一:暴力解法

通过两个for循环,从头开始找符合条件的子序列。暴力解法无法通过本题,超出时间限制,所以仅供参考。

代码如下:

暴力解法1:下面的代码是通过申请一个新的数组,将满足条件的子序列的长度放到新数组里面,然后再对数组排序返回最小的元素。

class Solution {
public:
    int minSubArrayLen(int target, vector<int>& nums) {
        vector<int> v; //通过新申请一个数组
        for (int i = 0; i < nums.size(); i++)
        {
            int sum = 0;//元素之和
            int count = 0; //子序列长度
            for (int j = i; j < nums.size(); j++)
            {
                sum += nums[j];
                count++;
                if (sum >= target) //是否满足条件,满足条件将子序列长度放进新数组
                {
                    v.push_back(count);
                    break;
                } 
            }
        }
        if(v.size() == 0) //当新数组中没有元素时即没有一个符合条件的返回0
            return 0;
        sort(v.begin(), v.end()); //对新数组排序
        return v[0];//返回最小的
    }
};

时间复杂度:O(N^2^ + N*logN)

空间复杂度:O(N)

暴力解法2:通过设置几个变量记录。

class Solution {
public:
    int minSubArrayLen(int target, vector<int>& nums) {
        int sum = 0;//子序列之和
        int sublength = 0; //子序列长度
        int result = INT32_MAX;//最后的长度,初始化时设置最大值方便后续比较
        for(int i = 0; i < nums.size(); i++)
        {
            sum = 0;
            sublength = 0;
            for(int j = i; j < nums.size(); j++)
            {
                sum += nums[j];
                sublength++;
                if(sum >= target)
                {
                	//sublength = j - i + 1;//也可以通过这种方式计算
                    result = result < sublength ? result:sublength;
                }
            }
        } 
        return result == INT32_MAX ? 0 : result;
    }
};

时间复杂度:O(N^2^)

空间复杂度:O(1)

思路2:滑动窗口法

确定for循环中的j是终止位置,设置一个变量i为起始位置,先计算出满足条件的sum,然后通过while改变起始位置i,不满足while条件的话就会进入for循环改变终止位置j,从而做到滑动。根据题目给出的测试用例,具体分析如下图:
在这里插入图片描述

代码如下:

class Solution {
public:
    int minSubArrayLen(int target, vector<int>& nums) {
        int sum = 0;//子序列之和
        int sublength = 0; //子序列长度
        int result = INT32_MAX;
        int i = 0;//滑动窗口起始位置
        for(int j = 0; j < nums.size(); j++)
        {
            sum += nums[j];
            while(sum >= target)
            {
                sublength = j - i + 1;//计算出当满足条件时的长度
                result = sublength > result ? result:sublength;//找出值相对较小的那个
                sum -= nums[i++];//改变起始位置
            }
        }
        return result == INT32_MAX ? 0:result; //当result的值没改变时,返回0
    }
};

时间复杂度:O(N),看每一个元素被操作的次数, sum += nums[j]时操作一次,sum -= nums[i++]又被操作一次,几乎每个元素都被操作两次,所以时间复杂度是2*N,但是根据大O的渐进表示法就是N,所以时间复杂度是O(N)
空间复杂度:O(1)

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

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

相关文章

人脸检测和人体检测4:C++实现人脸检测和人体检测(含源码,可实时检测)

人脸检测和人体检测4&#xff1a;C实现人脸检测和人体检测(含源码&#xff0c;可实时检测) 目录 人脸检测和人体检测4&#xff1a;C实现人脸检测和人体检测(含源码&#xff0c;可实时检测) 1. 前言 2. 人脸检测和人体检测检测模型&#xff08;YOLOv5&#xff09; &#xf…

AI教父Geoffrey Hinton:AGI革命堪比车轮的发明

作者 | Yana Khare 译者 | 平川 来源 | AI前线 ID | ai-front AI 教父&#xff1a;Geoffrey Hinton Geoffrey Hinton 通常被认为是“人工智能教父”&#xff0c;他在机器学习广泛流行之前就一直是这个领域的开拓者。Hinton 对人工神经网络和机器学习算法的发展做出了重大的贡…

单链表OJ题:LeetCode--234.回文链表

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;今天给大家带来的是LeetCode中203题&#xff1a;移除链表元素 数据结构 &#xff1a;数据结构专栏 作 者 &#xff1a;stackY、 LeetCode&#xff1a;LeetCode刷题训练营 LeetCode--234.回文链表&#xff1a;https:…

【利用AI让知识体系化】3万多字让你我快速入门数据结构与算法

文章目录 第一章&#xff1a;介绍数据结构与算法1.1 数据结构的概念1.2 算法的概念1.3 数据结构与算法的关系1.4 为什么需要学习数据结构与算法 第二章&#xff1a;时间与空间复杂度2.1 什么是时间复杂度2.2 时间复杂度的算法分析2.3 什么是空间复杂度2.4 空间复杂度的算法分析…

Lombok工具 : 常用注解介绍 (全)

文章目录 介绍引入Maven依赖常用的注解 NoArgsConstructor/AllArgsConstructorRequiredArgsConstructorGetter/SetterToString/EqualsAndHashCodeDataBuilderAccessors 其他注解 SneakyThrowsValueCleanupNotNullSynchronizedLog、Log4j、Slf4j、Log4j2、CommonsLog、XSlf4j等…

无需繁琐手工操作,如何利用Web自动化测试元素定位做到快速高效的测试?

1、什么是Web自动化测试元素定位&#xff1f; 在Web自动化测试中&#xff0c;元素定位是非常重要的环节。因为我们需要找到需要进行操作的页面元素&#xff0c;例如按钮、输入框、下拉菜单等等。元素定位可以帮助我们在自动化测试中对这些元素进行操作&#xff0c;如点击、输入…

老域名查询工具- 在线域名批量查询工具

域名批量查询工具 域名批量查询工具是一种帮助用户快速查询多个域名信息的工具&#xff0c;通常能够自动扫描一组域名的WHOIS信息、DNS、IP地址、服务器等各种信息&#xff0c;并提供快速的结果反馈。 以下是域名批量查询工具主要的优点&#xff1a; 提高工作效率&#xff1a…

培训出来包装三年经验拿21K,入职8天就被裁了....

最近翻了一些网站的招聘信息&#xff0c;把一线大厂和大型互联网公司看了个遍&#xff0c;发现市场还是挺火热的&#xff0c;虽说铜三铁四&#xff0c;但是软件测试岗位并没有削减多少&#xff0c;建议大家有空还是多关注和多投简历&#xff0c;不要闭门造车&#xff0c;错过好…

腾讯云面试题-重复的字符串+设计测试用例

原题出自&#xff1a;https://leetcode.cn/problems/repeated-substring-pattern/ 题目&#xff1a; 题解&#xff1a; 1、字符串长度为空&#xff0c;则返回false。 2、字符串长度为1&#xff0c;则为true&#xff0c;是由子串构成的。 3、字符串长度为2&#xff0c;判断首…

c++模板 理解(图、文、代码)

嗯&#xff0c;又是发个重点&#xff0c;拿出来单独做笔记 本文有参考以下博文&#xff1a; 1、C template \ auto_c template auto_rainbow_lucky0106的博客-CSDN博客 2、C 中的 const & &#xff08;常引用&#xff09;参数 - 知乎 3、C template \ auto_c template …

一文读懂国内首本《牛客2023金融科技校园招聘白皮书》

金融科技人才作为金融数字化转型的关键支撑&#xff0c;但当下金融科技人才培养体系尚未形成&#xff0c;优秀的金融科技人才供不应求&#xff0c;目前存在严重的人才供给问题。 据调研数据统计&#xff0c;96.8%的金融机构存在金融科技人才缺口&#xff0c;54.8%的机构认为新…

PDU配电单元推荐——同为科技(TOWE)自接线工程安全机柜PDU

随着信息化、数字化互联网技术在各行各业的迅速发展&#xff0c;符合现代化需求的机房建设尤为重要&#xff0c;其背后蕴藏着广阔的经济效益与市场前景。现代机房具备先进性、实用性、合理性、拓展性、精细化等特点&#xff0c;除了核心的计算机系统要实现安全可靠的平稳运行外…

UNIX中的文件属性和打开目录函数 lstat、opendir、readdir 5.13

文件属性获取与修改相关的操作函数 stat()fstat()/Istat() 文件类型 设置用户ID和设置组ID 文件存取许可权 新文件和目录的所有权 文件长度 文件截短. 文件的时间 打开目录 读取目录项 以下三个函数可以获取文件/目录的属性信息: #include <unistd.h> #include <sy…

小黑子—多媒体技术与运用基础知识四:计算机动画与视频处理技术

多媒体技术与运用4.0 多媒体系列第四章1. 计算机动态视觉媒体1.1 动态视觉媒体产生原理1.2 动态视频文件特点1.3 技术参数1.4 动画与视频的异同 2. 计算机动画的基础2.1 计算机动画的类型2.1.1 从动画生成机制划分2.1.2 从画面透视效果划分2.1.3 从画面形成规则和制作方法划分2…

PaLM 2全面反超反超GPT-4,谷歌官宣AI重构搜索,朝着ChatGPT微软开炮

来源 | 量子位 | 公众号 QbitAI 万众瞩目&#xff0c;谷歌的反击来了。 现在&#xff0c;谷歌搜索终于要加入AI对话功能了&#xff0c;排队通道已经开放。 当然这还只是第一步。 大的还在后面&#xff1a; 全新大语言模型PaLM 2正式亮相&#xff0c;谷歌声称它在部分任务超…

IT行业项目管理软件,你知道多少?

IT行业项目管理软件&#xff0c;主要得看用来管理的是软件研发还是做IT运维。如果是做软件研发&#xff0c;那还得看项目经理是用什么思路&#xff0c;是传统的瀑布式方法还是敏捷的方法或者是混合的方法。 如果用来管理的是IT运维工作&#xff0c;那么很多通用型的项目管理软件…

微服架构基础设施环境平台搭建 -(三)Docker+Kubernetes集群搭建

微服架构基础设施环境平台搭建 -&#xff08;三&#xff09;DockerKubernetes集群搭建 通过采用微服相关架构构建一套以KubernetesDocker为自动化运维基础平台&#xff0c;以微服务为服务中心&#xff0c;在此基础之上构建业务中台&#xff0c;并通过Jekins自动构建、编译、测试…

【python/request/HTMLTestRunner/unittest】接口自动化测试框架

正在调研使用python进行自动化测试&#xff0c;在网上发现一篇比较好的博文&#xff0c;作者使用的是python3&#xff0c;但目前自己使用的是python2&#xff0c;先转载下&#xff0c;后续再进行调试完善&#xff1b; 摘要: python requests实现的接口自动化框架详细教程 前…

VMware Aria Operations for Networks 6.10 - 网络和应用监控工具

VMware Aria Operations for Networks 6.10 - 网络和应用监控工具 请访问原文链接&#xff1a;https://sysin.org/blog/vmware-aria-operations-for-networks/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org VMware Aria Oper…

Goby 漏洞更新 |WordPress Welcart e-Commerce 插件 content-log.php 文件 logfile 参数文件读取漏洞

漏洞名称&#xff1a;WordPress Welcart e-Commerce 插件 content-log.php 文件 logfile 参数文件读取漏洞 English Name&#xff1a;WordPress plugin Welcart e-Commerce content-log.php logfile File Read Vulnerability CVSS core: 9.8 影响资产数&#xff1a;5453 漏…