209. 长度最小的子数组 - 力扣(LeetCode) (leetcode-cn.com)https://leetcode-cn.com/problems/minimum-size-subarray-sum/

思路:

这个题不能先排序呀!数是随机的!

一开始拿到这个题想到的是能不能用动态规划做,看着有点眼熟。但是想了想发现我不会,二维数组能表示的量不够,所以把思路转到专门的数组问题上。而这个数组处理的手段首先想到双指针。(不知道用双指针属于单纯的知识漏洞,不是问题;知道用双指针,知道双指针的思路和写法,但是写不出来才是问题)

思路就是设立快慢指针,总和sum和长度len(由于题里给了数组的长度限制,所以len一开始可以初始化为一个具体的值,比数组长度大1,这样就解决[1,1],target=2的例子),快指针遍历数组,sum加上fast对应的每个元素,一旦sum>=target,那么说明当前:

1.至少找到一个符合要求的序列,比对len与当前长度fast-slow的长度,取最小值;

2.该序列可能不是最优解,需要再次判断。

此时为了看是不是还能有更小的len,在保证sum满足要求的情况下,快指针不动,向数组末尾移动慢指针,同时sum减去慢指针所指的值,一并更新len的长度。

这样下来最后len如果从未被改变过,说明没有符合要求的序列,输出0;否则输出len即是最小长度。

class Solution {public int minSubArrayLen(int target, int[] nums) {int slow = 0,fast=slow;int len=100001,sum=0;while(fast<nums.length){sum+=nums[fast];while(sum>=target){len = Math.min(fast-slow,len);sum -= nums[slow];slow++;}fast++;}return len==100001?0:len+1;}
}

力扣209-长度最小的子数组(Java,双指针解法)相关推荐

  1. 209 长度最小的子数组(双指针)

    1. 问题描述: 给定一个含有 n 个正整数的数组和一个正整数 target .找出该数组中满足其和 ≥ target 的长度最小的连续子数组 [numsl, numsl+1, ..., numsr- ...

  2. 209. 长度最小的子数组(中等 数组 滑动窗口)

    209. 长度最小的子数组 给定一个含有 n 个正整数的数组和一个正整数 target . 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, -, n ...

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

    题目描述: 给定一个含有 n 个正整数的数组和一个正整数 target .找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, ...

  4. 代码随想录算法训练营第二天|LeetCode 977.有序数组的平方 、209.长度最小的子数组 、59.螺旋矩阵II

    LeetCode 977.有序数组的平方 题目链接:977.有序数组的平方 思路: 1.先对每个数进行遍历平方,并插入新的容器中 2.对容器进行排序,返回就可以了 缺陷:开辟了新的容器空间 class ...

  5. 【宫水三叶的刷题日记】209. 长度最小的子数组(中等)

    题目描述 这是 LeetCode 上的 209. 长度最小的子数组 ,难度为 中等. Tag : 「前缀和」.「二分」 给定一个含有 n 个正整数的数组和一个正整数 target. 找出该数组中满足其 ...

  6. LeetCode 209. 长度最小的子数组 (滑动窗口)

    LeetCode 209. 长度最小的子数组 class Solution {public int minSubArrayLen(int s, int[] nums) {int start = 0;i ...

  7. 代码随想录算法训练营第二天 | LeetCode977有序数组的平方 、209长度最小的子数组、 59.螺旋矩阵II

    --------------------------- 977.有序数组的平方 #include <iostream> #include <algorithm> #includ ...

  8. LeetCode 209. 长度最小的子数组(滑动窗口)

    1. 题目 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组. 如果不存在符合条件的连续子数组,返回 0. 示例: 输入: s = 7, num ...

  9. Leetcode 209. 长度最小的子数组 解题思路及C++实现

    解题思路: 定义两个指针 left 和 right,构成一个滑动窗口,当窗口内的数值和小于 s 时,右指针向右滑动,当窗口内的数值和大于等于 s 时,就要更新一次 子数组的最小长度了.同时 左指针向右 ...

  10. 10. Leetcode 209. 长度最小的子数组 (数组-同向双指针-滑动窗口)

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

最新文章

  1. php cros跨域处理,php接口设置cors实现ajax跨域
  2. JS中的Math.ceil和Math.floor函数的用法
  3. Git内部原理之深入解析Git对象
  4. ios UITableview 刷新某一个cell 或 section
  5. java spring初始化_Spring框架初始化解析
  6. delphi 组件安装教程详解
  7. Flutter 修改自带Switch,实现轻量自定义Switch,使用screen_utils适配大屏
  8. ipa java_Java 解析 IPA 文件,读取 Info.plist 信息
  9. 11岁的Tumblr:开启艰难禁黄之路
  10. 基于51单片机的校园教室打铃系统
  11. Linux模拟试题及答案(全)
  12. Oracle heap 表的主键 dump 分析
  13. 用数字签名实现防篡改
  14. java学习笔记(file类):
  15. elo匹配算法c语言,匹配算法全面解析:采用国际通用“ELO等级分系统”
  16. 电机与matlab突然,同步电机的三相突然短路的MATLAB计算
  17. jaeger 是很么软件_JAEGER软件
  18. Hadoop集群安装及其配置(三台虚拟机)
  19. 计算机毕业设计JAVA海滨体育馆管理系统mybatis+源码+调试部署+系统+数据库+lw
  20. 通过bat批处理命令进行adb push批量拉取文件

热门文章

  1. 扎实的基础知识、高质量的代码
  2. cocos2d-x学习资源汇总(持续更新。。。)
  3. ES6-使用let关键字定义变量
  4. 软件开发沉思录--ThoughtWorks文集
  5. 实现用户注册功能---文件保存信息,如果用户名存在就死循环继续
  6. Android8.0适配之一应用图标适配
  7. Spark机器学习(3):保序回归算法
  8. 数据结构学习一:概述
  9. SqlServer-函数
  10. 《WinForm开发系列之控件篇》Item3 BindingSource (暂无)