leecode209长度最小的子数组——手写详解

LeetCode209——长度最小的子数组 我的LeetCode代码仓:https://github.com/617076674/LeetCode 原题链接:https://leetcode-cn.com/problems/minimum-size-subarray-sum/description/ 题目描述: 知识点:滑动窗口法 思路一:从左到右遍历数组寻找最小长度 时间复杂度是O(n ^ 2),其中n为nums数组的长度。... 阅读详情

滑动窗口解决代码的思路和优化思路——手写版

思路

1c09cdb499cd6707b1c0af6740e84ca6_720.png

优化思路

5f8805b3d4aa9e5ad9c981d39a608f09_720.png

代码分析

通过代码(未优化)

class Solution {
    public int minSubArrayLen(int target, int[] nums) {
        int fast=0,low =0;
        int sum=nums[low],length=0;
        //排除特殊情况
        if(nums.length==1){
            if(target>nums[0]){
                return 0;
            }else return 1;
        } 
        if(nums[0]>target){
            return 1;
        }
        for(fast =1 ;fast<nums.length;fast++){
            if(sum+nums[fast]<target){
                sum+=nums[fast];
            }else {
                sum+=nums[fast];
                //找出这个length的最小值
                if(low==0){
                    length=fast-low+1;
                }else
                    length=Math.min(length,fast-low+1);
                //对其进行求和
                sum-=nums[low];
                low++;
                if(sum>=target){
                    length=Math.min(length,fast-low+1);
                    if(fast>low){
                        sum-=nums[low];
                        low++;
                        sum-=nums[fast];
                        fast--;
                    }
                }
            }
        }
        return length;
    }
}

优化代码

针对上面的未优化代码我做了专项的优化,让这个代码变得更加简洁,更易懂

public class 长度最小的子数组 {
    public static void main(String[] args) {
        int n;
        Scanner input = new Scanner(System.in);
        System.out.println("请输入数组的长度");
        n=input.nextInt();
        int[] num = new int[n];
        System.out.println("输入数组的元素只能为正数");
        for (int i = 0; i < num.length; i++) {
            num[i]= input.nextInt();
        }
        System.out.println("请输入你要查找的目标值");
        int target = input.nextInt();
        System.out.println(minSubArrayLen(target, num));
    }
    //优化代码
    public static int minSubArrayLen(int target, int[] nums) {
        int fast=0,low =0;
        int sum=0,length=100002; //length要超过这个num.length的范围之后才能不断的进行更新
        //排除特殊情况
        for(fast =0 ;fast<nums.length;fast++){
            sum+=nums[fast];
            if(sum>=target){
                //找出这个length的最小值
                length = Math.min(length,fast-low+1);
                //对其进行求和
                sum-=nums[low];
                low++;  //低速指针前移,让其数组范围缩小
                while (sum>=target){
                    length=Math.min(length,fast-low+1);
                    sum-=nums[low];
                    low++;
                }
            }
        }
        if(length==100002){
            return 0;
        }
        return length;
    }
}
从Podfile到分享成功:ShareSDK小红书模块集成全流程实战(附视频分享代码) 本文详细介绍了iOS应用如何通过ShareSDK集成小红书分享功能的全流程,包括环境配置、SDK初始化、图片和视频分享实现,以及常见问题排查和性能优化策略。特别针对视频分享这一高频需求场景,提供了完整的代码示例和实战技巧,帮助开发者快速实现社交分享功能。 阅读详情

相关推荐

光模块数字诊断监控(DDM)功能

DDM(Digital Diagnostic Monitoring)数字诊断监控,由行业组织SFF Committee制定,遵循SFF-8472多源协议定义的标准参数而工作,规范了光模块和网络设备的软硬件所需遵循的标准数值或范围,确保了网络设备供应商和光模块供应商之间所提供产品的互操作性不同。:通过监测激光器的偏置电流来预测激光器的劣化,从而确保在故障发生之前将业务切换到备用链路上或替换有可能故障的光模块,因此起到了预测光模块寿命的作用。光模块DDM信息可以通过SNMP读取光模块的接收光功率和发射光功率。.

光模块的博客 2300

LeetCode 209 题:长度最小的子数组

LeetCode 第209题要求给定一个正整数数组nums和一个正整数target,找出具有最小长度的连续子数组,使得子数组的和大于或等于target。如果不存在这样的子数组,返回0。

weixin_48941116的博客 1235

别再死记硬背了!用‘小乌龟’实战图解ROS1核心指令(rosnode/rostopic/rosparam保姆级手册)

本文通过经典的turtlesim乌龟仿真器,以可视化实战方式讲解ROS1核心指令(rosnode/rostopic/rosparam),帮助初学者摆脱死记硬背,在操控乌龟的过程中轻松掌握节点管理、话题通信和参数设置等ROS1核心概念。

weixin_28731223的博客 370

LeeCode 209. 长度最小的子数组

入门阶段:先掌握暴力解法,理解 “枚举子数组” 的基本思路,建立对问题的直观认知;进阶阶段:深入理解滑动窗口的 “动态调整” 逻辑 —— 它的本质是 “用空间换时间”(虽然此处空间未增加,但通过指针减少了重复计算),是解决 “连续子数组 / 子串” 问题的通用优化手段;实战选择:若数组长度较小,暴力解法可快速实现;若数组长度较大(如 LeetCode 中等 / 困难难度题目),必须使用滑动窗口等优化思路。通过本文的讲解,相信你已掌握 “长度最小的子数组” 的两种核心解法。

2302_80192044的博客 1186

京东云鼎环境配置与API安全接入实战:ISV服务商如何搞定数据加密与商家授权

本文详细介绍了京东云鼎环境配置与API安全接入的实战指南,帮助ISV服务商解决数据加密与商家授权等核心问题。通过京东开放平台的应用申请流程,结合多租户数据隔离策略和自动化授权实现,确保电商生态中的安全高效运营。文章还提供了避坑指南,助力开发者规避常见配置错误。

weixin_28705087的博客 353

Apache Doris IP变更问题详解

Apache Doris IP变更问题详解

ith321的博客 7274

LeetCode第209题_长度最小的子数组

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

qq_40263592的博客 1476

【硬件】通俗易懂的讲解晶体管(三极管和MOS管)的工作原理

晶体管是一个简单的元器件,可用于构建许多有趣的项目。在本文中,我将用通俗易懂的语言给您讲解晶体管的工作原理,以便您可以在电路设计中更好的使用静态管。一旦你学习这些基础知识,对以后的设计和使用来说,将会变得非常容易。我们将重点介绍两种最常见的晶体管:双极型晶体管(三极管)和MOSFET。晶体管的工作原理其实是类似于电子开关。它可以打开和关闭电路。一个简单的思考方法是将晶体管视为无源的继电器。晶体管类似于继电器,从某种意义上说,您可以使用它来打开和关闭某些东西。但晶体管也可以部分导通,一般在放大电路中使用,这部

1万+

LeetCode练习——209.长度最小的子数组(C++)

滑动窗口是一种高效的数据处理技术,主要用于数组和字符串相关问题,通过减少循环的嵌套来降低算法的时间复杂度。定义:滑动窗口时在一个特定大小的字符串或数组上进行操作的一种技术,通过双指针调整窗口的起始和结束位置来进行计算和优化,从而在时间复杂度上达到OnO(n)On的高效性能。工作原理:滑动窗口的实现主要依赖于双指针或者迭代器来标识当前处理的子序列(窗口)。在数组或字符串的处理中,窗口逐步移动,然后再每个位置执行相应的操作,比如,该题就是计算窗口中所有元素的和并和募兵制进行比较。应用场景。

m0_73239022的博客 2410

避坑指南:Qt5.14.2 ARM交叉编译中那些你可能遇到的‘坑’及解决方案

本文深度解析了Qt 5.14.2在ARM架构上进行交叉编译的完整流程与常见难题。重点阐述了如何精准匹配交叉编译器与目标板环境、正确配置sysroot以及使用configure参数的艺术,并针对编译过程中的头文件缺失、链接错误等典型“坑”提供了经过验证的解决方案,旨在帮助开发者成功构建适用于嵌入式设备的Qt运行时库。

weixin_29279101的博客 352

Unipush2.0 App消息推送(在线+离线推送)

使用unipush2.0进行消息推送,包含在线跟离线

weixin_50251467的博客 3699

209.长度最小的子数组

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

m0_68880377的博客 962

基于Simulink的占空比调制DTC降低转矩脉动

修改传统SVPWM模块,输入占空比d和有效矢量索引,计算Ton​=d∗Tc​、Toff​=(1−d)∗Tc​,生成对称PWM波形(替代开关表直接输出)。:低速时(n<500rpm)减小dmax​=0.6(避免磁链畸变),高速时(n>2000rpm)增大dmax​=0.8(提升动态响应);kT​/kψ​:转矩/磁链误差增益(需整定,如kT​=0.02/(N⋅m),kψ​=0.1/Wb);(θ为电压矢量与磁链夹角)。② SVM-DTC(占空比计算模块启用,d0​=0.5,kT​=0.02,kψ​=0.1)。

amy_mhd的博客 87

209. 长度最小的子数组

中等给定一个含有n个正整数的数组和一个正整数target找出该数组中满足其总和大于等于target的长度最小的,并返回其长度如果不存在符合条件的子数组,返回0。O(n)

一同进步 1091

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

LeetCode 209长度最小的子数组

LeetCode 209长度最小的子数组 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度。如果不存在符合条件的连续子数组,返回 0。 输入:s = 7, nums = [2, 3, 1, 2, 4, 3] 输出:2 解释:子数组 [4,3] 是该条件下的长度最小的连续子数组。 暴力法(时间复杂度:O(n2) ) 遍历每一个数字,依次将每个数字为起始点下标开始添加数字,记录当总和大于等于s时的长度 class Sol

XBlog 295

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

( 数组) 209. 长度最小的子数组——【Leetcode每日一题】

209. 长度最小的子数组 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。

weixin_43412762的博客 1292

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

每日一练:LeeCode-209、长度最小的子数组【滑动窗口+双指针】

给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足 其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] 。

小孔靠得住的博客 802

LeetCode 209: 长度最小的子数组

目录LeetCode 209: 长度最小的子数组题目描述解题 LeetCode 209: 长度最小的子数组 题目描述 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度。如果不存在符合条件的连续子数组,返回 0。 【示例】 输入:s = 7, nums = [2,3,1,2,4,3] 输出:2 解释:子数组 [4,3] 是该条件下的长度最小的连续子数组。 【进阶】 如果你已经完成了 O(n) 时间复杂度的解法, 请尝试 O(n log

s_Shune 307

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

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

Danger的博客 648

LeetCode 209.长度最小的子数组

给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。

2301_80211119的博客 426

LeetCode209. 长度最小的子数组

LeetCode209. 长度最小的子数组 方法一 暴力枚举所有可能的子数组,也就是枚举子数组的所有开始下标和结束下标,计算子数组的和,如果子数组的和小于等于s,就更新最小长度。 class Solution { public: int minSubArrayLen(int s, vector<int>& nums) { if(nums.size() == 0) { //数组为空的情况需要特判 retur

RJ_theMag的博客 378

LeetCode第209题长度最小的子数组

209. 长度最小的子数组 题目: 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。 示例: 输入:s = 7, nums = [2,3,1,2,4,3] 输出:2 解释:子数组 [4,3] 是该条件下的长度最小的子数组。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/minimum-size-subarray-sum 著作权归领扣网络

qq_41967623的博客 363

LeetCode 209. 长度最小的子数组

初始化:定义参数:两个指针,分别是slow,fast,初始都为0。sum:连续子数组值的和,初始值为0。min:最小连续子数组的长度,也是最终的返回值,初始值设置为Integer.MAX_VALE。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。输入:target = 7, nums = [2,3,1,2,4,3]解释:子数组 [4,3] 是该条件下的长度最小的子数组。

weixin_44016361的博客 1591

LeetCode 209. 长度最小的子数组 | Python

使用双指针的方法,解决《209. 长度最小的子数组》。同时使用前缀和+二分查找的方法完成进阶要求的内容。

"大梦三千秋的博客 1166

【算法专题】滑动窗口之209. 长度最小的子数组(力扣)

🏆本篇主题为:滑动窗口之209. 长度最小的子数组(力扣)

cilmy23的note 764
上一篇: leecode904水果成篮——手写详解
下一篇: leecoode59螺旋矩阵——带有调试代码
TranquilGlow
博客等级 码龄5年 132粉丝 62原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值