给定一个含有 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 <= 109
1 <= nums.length <= 105
1 <= nums[i] <= 105

进阶:

如果你已经实现 O(n) 时间复杂度的解法, 请尝试设计一个 O(n log(n)) 时间复杂度的解法。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-size-subarray-sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

暴力遍历

class Solution {public int minSubArrayLen(int target, int[] nums) {int min = Integer.MAX_VALUE;int sum = 0; //子序列数值之和for (int i = 0; i < nums.length;i++){sum = 0;for(int j = i;j < nums.length;j++){sum+=nums[j];if(sum >= target){int len = j - i + 1 ; //子序列长度min = len < min ? len : min;//取较短的长度break;} }}//如果没有找到min还依然等于最初赋值return min == Integer.MAX_VALUE ? 0 : min;}
}


时间复杂度O(n^2)
空间复杂度O(1)

双指针(滑动窗口)

class Solution {public int minSubArrayLen(int target, int[] nums) {int min = Integer.MAX_VALUE;int i = 0, j = 0,sum = 0;for(j = 0 ; j < nums.length; j++){sum += nums[j];while(sum >= target){int len = j - i + 1;min = len < min ? len : min;sum -= nums[i++];}}return min == Integer.MAX_VALUE ? 0 : min;}
}

数组|leetcode209.长度最小的子数组相关推荐

  1. 代码随想录第二天 |LeetCode977.有序数组的平方,LeetCode209.长度最小的子数组,LeetCode59.螺旋矩阵II

    LeetCode977.有序数组的平方 977. 有序数组的平方 - 力扣(LeetCode) 暴力解法: 一开始不习惯用双指针解法,习惯性先平方再用双指针,发现做不出了HH.于是愉快的用传统暴力解法 ...

  2. 1、leetcode209 长度最小的子数组

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

  3. 代码随想录Day02 | LeetCode977.有序数组的平方、LeetCode209.长度最小的子数组、LeetCode59.螺旋矩阵II

    977.有序数组的平方 力扣题目链接(opens new window) 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序. 示例 1: ...

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

    LeetCode977.有序数组的平方 题目链接:LeetCode977.有序数组的平方 暴力解法: class Solution { public:vector<int> sortedS ...

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

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

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

    算法训练营打卡第二天,今天的前两道题目重点练习了双指针的用法,最后一道题目将边界条件的限定作为关键点,额外锻炼了逻辑能力. LeetCode977.有序数组的平方 题目链接 https://leetc ...

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

    代码随想录算法训练营第二天 | LeetCode977.有序数组的平方 ,209.长度最小的子数组,59.螺旋矩阵II 一. LeetCode977.有序数组的平方 1. 题目链接[LeetCode9 ...

  8. 【Leetcode数组--子数组--滑动窗口】209. 长度最小的子数组 904. 水果成篮 1004. 最大连续1的个数 III 76. 最小覆盖子串(有数组操作中重要的方法:滑动窗口!!!!)

    文章目录 Leetcode209 1.问题描述 2.解决方案 解法一:两个错误思路的算法 解法二:暴力 解法三:滑动窗口法(O(n)) Leetcode904 1.问题描述 2.解决方案 Leetco ...

  9. 209. Minimum Size Subarray Sum 长度最小的子数组

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

最新文章

  1. python 申请内存空间、用于创建多维数组_python 申请内存空间,用于创建多维数组的实例...
  2. 2008php多版本共存,lnmp安装多版本PHP共存的方法详解
  3. 视频导切台控制说明:RGBLink MiniPro初步测试
  4. axure9 邮件点击效果_EDM邮件营销,你不得不知道的8个指标?
  5. 数字语音信号处理学习笔记——绪论(1)
  6. shell编程 之 test命令
  7. 案例实现jquery.cookie的操作
  8. CSS 语言伪类选择器
  9. 一个简单的txt读取与导出
  10. Ubuntu16.04系统 GPU1070Ti下搭建Caffe++Nvidia显卡驱动+Cuda9.0+Cudnn7.0.5
  11. 防止跨站攻击——CSRFToken
  12. 正宇丨人生哪有事事如意,生活哪有样样顺心
  13. Scipy 学习 第1篇:插补
  14. VS没有CUDA模块问题
  15. 2023校招荣耀笔试
  16. 码学堂P1686 Hello, World!题解
  17. 怎样借助Python爬虫给宝宝起个好名字--python 学习
  18. C语言连续自动自加怎么表示,为什么不建议在C语言中连续使用自增自减运算符...
  19. AdminLTE2 框架的使用
  20. 汇编语言课后习题答案(王爽)

热门文章

  1. 时间序列与R语言应用(part5)--移动平均MA模型及其可逆性
  2. 什么是 SAP SUP - Sybase Unwired Platform
  3. 关于 jMeter 结果报表里的 APDEX (Application Performance Index)
  4. fixture.detectChange开始单步调试,如何执行到Directive的ngOnChange钩子
  5. css flex属性学习笔记
  6. SAP Spartacus Header区域的渲染逻辑
  7. SAP Authenticator apk下载
  8. 使用SAP Cloud for Customer Product OData服务读取产品主数据和其图片信息
  9. ABAP和Go语言的初始化操作, Kubernetes的Init Container
  10. Netweaver的端口号和Spring boot内嵌的Tomcat端口