Leetcode--209. 长度最小的子数组

给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。如果不存在符合条件的连续子数组,返回 0。

示例: 

输入: s = 7, nums = [2,3,1,2,4,3]
输出: 2
解释: 子数组 [4,3] 是该条件下的长度最小的连续子数组。
进阶:

如果你已经完成了O(n) 时间复杂度的解法, 请尝试 O(n log n) 时间复杂度的解法。

思路:

双指针法:

设定上下界,从0开始,右指针一直向右遍历,累加遍历过的值,当和大于等于s时,减去第一个值,如果还是大于等于s,减去第二个值,以此类推,一直遍历到最后。

提交的代码:

class Solution {
    public int minSubArrayLen(int s, int[] nums) {
        int i=0,j=0,sum=0,t=2147483647;//sum记录当前和,t记录当前和是几个值的相加
         while(sum>=s||(i<nums.length&&j<nums.length))   //这里sum>=s比较重要,比如s=7,数组最后三项是2,4,3,如果不加,因为此时j已经达到退出循环的条件,会退出,然后sum=9,t=3;所以加这个条件使得继续执行else if中的操作
         {
             if(sum<s)
             {
                 sum+=nums[j];
                 j++;
             }
             else if(sum>=s)
             {
                 if(j-i<t)
                 {
                     t = j-i;
                 }
                 sum-=nums[i];
                 i++;
             }
         }
         if(t==2147483647)
         {
             return 0;
         }
          return t;  
    }
}

完整的代码:


public class Solution209 {
     public static int minSubArrayLen(int s, int[] nums) {
         int i=0,j=0,sum=0,t=2147483647;//sum记录当前和,t记录当前和是几个值的相加
         while(sum>=s||(i<nums.length&&j<nums.length))
         {
             if(sum<s)
             {
                 sum+=nums[j];
                 j++;
             }
             else if(sum>=s)
             {
                 if(j-i<t)
                 {
                     t = j-i;
                 }
                 sum-=nums[i];
                 i++;
             }
         }
         if(t==2147483647)
         {
             return 0;
         }
          return t;  
        }
     public static void main(String[] args)
     {
         int[] nums = {2,3,1,2,4,3};
         int s = 7;
         System.out.println(minSubArrayLen(s,nums));
     }
}
 

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

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

相关文章

java 继承类_java类的继承

继承就是在一个现有类型的基础上&#xff0c;通过增加新的方法或者重定义已有方法(重写)的方式&#xff0c;产生一个新的类型。继承是面向对 象的三个基本特征——封装、继承、多态的其中之一&#xff0c;我们在使用java时编写的每一个类都是在继承&#xff0c;因为在java语言 …

Leetcode--287. 寻找重复数

给定一个包含 n 1 个整数的数组 nums&#xff0c;其数字都在 1 到 n 之间&#xff08;包括 1 和 n&#xff09;&#xff0c;可知至少存在一个重复的整数。假设只有一个重复的整数&#xff0c;找出这个重复的数。 示例 1: 输入: [1,3,4,2,2] 输出: 2 示例 2: 输入: [3,1,3,4…

2021年,神经科学AI有这几大趋势

来源&#xff1a;The Next Web作者&#xff1a;Tristan Greene编译&#xff1a;科技行者新的一年正向我们招手。延续优良的革命传统&#xff0c;又到了发布最新一期AI专家预测报告的时候。各位受访专家将结合自己的所感所知、实验室发现以及企业动态为我们预测新一年中人工智能…

深度遍历和广度遍历

深度优先 例如下图&#xff0c;其深度优先遍历顺序为 1->2->4->8->5->3->6->7 广度优先 如下图&#xff0c;其广度优先算法的遍历顺序为&#xff1a;1->2->3->4->5->6->7->8 转载于:https://www.cnblogs.com/bigman-bugman/p/920252…

java ejb项目_Maven创建EJB项目结构

可以用maven创建EJB项目的结构。1、打开cmd2、输入一下内容mvn archetype:generate -DarchetypeGroupIdorg.codehaus.mojo.archetypes -DarchetypeArtifactIdpom-root -DarchetypeVersion1.1 -DarchetypeRepositoryhttp://repo.maven.apache.org/maven2 -DgroupIdcom.XXX -Dart…

2020年人工智能十大技术进展

pixabay.com来源&#xff1a;知识分子 撰文 &#xff1a; 全体智源学者制版编辑&#xff1a;卢卡斯编者按编者按2020年即将过去&#xff0c;今年人工智能领域有哪些重大进展&#xff1f;位于北京的智源人工智能研究院请 “智源学者” 们从全球的研究成果中评选了一份年度成就名…

Leetcode--424. 替换后的最长重复字符

给你一个仅由大写英文字母组成的字符串&#xff0c;你可以将任意位置上的字符替换成另外的字符&#xff0c;总共可最多替换 k 次。在执行上述操作后&#xff0c;找到包含重复字母的最长子串的长度。 注意: 字符串长度 和 k 不会超过 104。 示例 1: 输入: s "ABAB"…

CentOS 6快捷安装RabbitMQ教程

1.安装Erlang yum install erlang 2.安装RabbitMQ yum install rabbitmq-server 3.配置开机自启动 chkconfig rabbitmq-server on 4.启动RabbitMQ service rabbitmq-server start 5.查询RabbitMQ路径 whereis rabbitmq 6.进入目录 7.开启RabbitMQ的Web管理界面 ./rabbitmq-plug…

java视频压缩 lz4_关于LZMA和LZ4压缩的疑惑解析

原标题&#xff1a;关于LZMA和LZ4压缩的疑惑解析这是第112篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、优化相关的问题&#xff0c;建议阅读时间10分钟&#xff0c;认真读完必有收获。UWA QQ群&#xff1a;465082844(仅限技术交流)AssetBundleQ&#xff1a;…

微积分的发现是人类精神的最高胜利

来源 &#xff1a; 数学英才微积分早期的思想基础在25岁以前的伽利略就开始作了一系列实验&#xff0c;发现了许多有关物体在地球引力场运动的基本事实&#xff0c;最基本的就是自由落体定律。开普勒在1619年前后归纳为著名的行星运动三大定律。这些成就对后来的绝大部份的数学…

数据库MySQL/mariadb知识点——触发器

触发器 触发器&#xff1a;trigger&#xff0c;是指事先为某张表绑定一段代码&#xff0c;当表中的某些内容发生改变&#xff08;增、删、改&#xff09;的时候&#xff0c;系统会自动触发代码并执行。 触发器包含三个要素&#xff0c;分别为 事件类型&#xff1a;增删改&#…

Leetcode--826. 安排工作以达到最大收益

有一些工作&#xff1a;difficulty[i] 表示第i个工作的难度&#xff0c;profit[i]表示第i个工作的收益。 现在我们有一些工人。worker[i]是第i个工人的能力&#xff0c;即该工人只能完成难度小于等于worker[i]的工作。 每一个工人都最多只能安排一个工作&#xff0c;但是一个…

【前沿技术】2021九大技术趋势:规模化机器学习、「零信任」架构

来源&#xff1a;智能研究院《德勤2021年技术趋势》报告研究了疫情一年来对企业战略、运营和技术带来的连锁反应&#xff0c;论述了其重大发现&#xff1a;全球企业正在加速数字化战略转型&#xff0c;从而构建「韧性」、开创全新的经营模式。报告讨论了接下来18至24个月及以后…

Java项目打包成exe的详细教程

Java项目打包成exe的详细教程 把Java项目打包成exe共分为以下两步&#xff1a; 1、 利用Eclipse先把Java项目先打成jar包 2、 利用exe4j工具把jar包转成exe 这里以Java项目&#xff08;ExeDemo&#xff09;为例进行讲解 随便在一个位置新建一个文件夹&#xff0c;文件夹的名称也…

linux java amr转mp3_本工具用于将微信语音 amr 格式转换为 mp3 格式以便在 html5 的 audio 标签中进行播放...

音频转码工具本工具主要用于将微信语音 amr 格式转换为 mp3 格式以便在 html5 的 audio 标签中进行播放。支持 Linux/Windows/Mac 平台因为是基于 JAVE 项目的修改&#xff0c;而 JAVE 是依赖 ffmpeg 所以可以适用于所有 ffmpeg 所支持的文件格式的转换。具体可以查看 JAVE 官方…

MySQL小问题:cant connect to MYSQL server on localhost

连接数据库发现出现了错误&#xff1a;2003-cant connext to MYSQL server on localhost 解决方法&#xff1a; 1.winr 打开cmd控制台&#xff0c;首先net startenter 查看有没有mysql服务启动&#xff0c;一般这不会出现问题 此时你输入mysql -u root -p 是会出现错误的 2…

【c# 学习笔记】所有类的父类:System.object

在c#中&#xff0c;所有的类都派生自System.Object类。如果定义的类&#xff0c;没有直达任何基类&#xff0c;编译器就会自动把Object类当作它的基类。和其他类 一样&#xff0c;System.Object类也定义了一组共有的成员&#xff0c;其定义如下&#xff1a; public class Objec…

数学史上的哲学绝唱——无穷观与数学基础的争论

来源&#xff1a;《广西民族大学学报》2014年11月作者&#xff1a;郭龙先&#xff0c;黄永两千多年来&#xff0c;数学家们一直试图从少数公理出发&#xff0c;根据明确给出的演绎规则推导出其他数学定理&#xff0c;从而把整个数学构造成为一个严密的演绎大厦&#xff0c;然后…

java dct变换_Discrete Cosine Transform [DCT] (离散余弦变换)

Discrete Cosine Transform [DCT] (离散余弦变换)描述&#xff1a;Binarizer是一个Transformer。离散余弦变换是与傅里叶变换相关的一种变换&#xff0c;它类似于离散傅立叶变换但是只使用实数。离散余弦变换相当于一个长度大概是它两倍的离散傅里叶变换&#xff0c;这个离散傅…

Leetcode--141. 环形链表

给定一个链表&#xff0c;判断链表中是否有环。 为了表示给定链表中的环&#xff0c;我们使用整数 pos 来表示链表尾连接到链表中的位置&#xff08;索引从 0 开始&#xff09;。 如果 pos 是 -1&#xff0c;则在该链表中没有环。 示例 1&#xff1a; 输入&#xff1a;head …