1. 问题描述:

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

示例 1:

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

示例 2:

输入:target = 4, nums = [1,4,4]
输出:1

示例 3:

输入:target = 11, nums = [1,1,1,1,1,1,1,1]
输出:0

提示:
1 <= target <= 10 ^ 9
1 <= nums.length <= 10 ^ 5
1 <= nums[i] <= 10 ^ 5
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-size-subarray-sum

2. 思路分析:

因为求解的是一个区间的和,所以考虑一下是否可以使用双指针算法(滑动窗口属于特殊的双指针算法),考虑当前的区间[j, i],当i往右走的时候也即下图中的i'位置,这个时候考虑左端点j在j的左边还是右边,因为i往右走的时候数组元素都是大于0的所以和是递增的,当区间[j, i]超过了s之后那么j肯定是往右走的,这个时候区间和才会减小,所以j'应该在右边,所以可以左边的指针j是随着右边的指针i单调的,也即同一个方向移动所以可以使用双指针算法,时间复杂度为0(n)。

3. 代码如下:

from typing import List
import sysclass Solution:def minSubArrayLen(self, target: int, nums: List[int]) -> int:i, j = 0, 0s = 0res = sys.maxsizewhile i < len(nums):s += nums[i]while s - nums[j] >= target:s -= nums[j]j += 1if s >= target: res = min(res, i - j + 1)i += 1if res == sys.maxsize: res = 0return res

209 长度最小的子数组(双指针)相关推荐

  1. LeetCode 209. 长度最小的子数组(双指针+滑动窗口)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. 数据流重定向和管道命令, grep, tr,sort, wc, cut,split,tee,sleep(shell 02)
  2. 洛谷 - P4768 [NOI2018]归程(Kruskal重构树+树上倍增+最短路)
  3. TCP为什么需要三次握手和四次挥手
  4. 处理字符集中的算式问题
  5. linux 如何产生so文件,printf()函数 【转】Linux下gcc编译生成动态链接库*.so文件并调用它(2)...
  6. andriod手机客户端自动化测试工具整理
  7. VIO,visual-inertial odometry)即视觉惯性里程计
  8. 2011QQ搞笑个性签名:小弟不才,大名耶稣.小名上帝.法号如来
  9. Groupon新变种 LevelUp:折价券
  10. h61 nvme硬盘_谁更快?PCIe 4.0时代的NVMe固态硬盘性能对决
  11. pythoncookie自动登录_Python爬虫连载6-cookie深入使用实例化实现自动登录
  12. Mac下brew及brew-cask安装使用
  13. 去掉UUID的小横线,如果你觉得不爽的话,哈哈
  14. OPENAPI3.0 与 SpringBoot 开发实战: 新型高效开发模式,实现代码与API分离,高效开发,开发必看!!!
  15. 安装RabbitVCS
  16. android7程序自启动管理在哪,开机启动管理最新版-开机启动管理软件下载v3.7.1 安卓版-腾牛安卓网...
  17. TortoiseGit 配置密钥 ppk
  18. sdr 收听广播_产品管理的50个最佳阅读,收听和观看资源
  19. [Algorithmic Toolbox学习笔记][week6]0/1 Knapsack Problem
  20. java perl 正则表达式_java 风格的正则表达式 vs Perl风格的正则表达式

热门文章

  1. WPS怎么打印到一张纸上?
  2. Pr入门系列之一:了解Pr及视频工作流程
  3. 产业安全专家谈丨如何为政务大数据平台构筑安全防护能力?
  4. 奇点机智林德康:做语音助手,这条路是最好的
  5. C++ vs2017 - libcurl - http请求 代码大全(请求数据,上传下载文件,多线程上传下载文件)
  6. excel 打印 ,打印预览每一页只有一个单元格的问题
  7. 人大附国际班学长独家分享AP生存手册
  8. 跨国邮件诈骗团伙案例
  9. 字符串 字符 数字的加法运算
  10. 查找指定数字在数组中出现的位置(有几次打印几次)