[刷题] LeetCode 209 Minimum Size Subarray Sum

Posted cxc1357

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[刷题] LeetCode 209 Minimum Size Subarray Sum相关的知识,希望对你有一定的参考价值。

要求

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

示例

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

思路

  • 暴力解法(n3)
  • 滑动窗口(时间n,空间1)
    • 双索引,nums[l...r] 为滑动窗口
    • 小于s,j后移
    • 大于等于s,i后移
    • 每次移动后,若大于等于s,则更新最小长度res
    • L9:处理右边界到头的情况

 1 class Solution{
 2 public:
 3     int minSubArrayLen(int s, vector<int>& nums){
 4         int l = 0, r = -1;
 5         int sum = 0;
 6         int res = nums.size() + 1;
 7         
 8         while( l < nums.size())    {
 9             if( r+1 < nums.size() && sum < s)
10                 sum += nums[++r];                    
11             else
12                 sum -= nums[l++];
13             if(sum >= s)
14                 res = min(res,r-l+1);
15         }        
16         if(res== nums.size()+1)
17             return 0;
18         return res;
19     }
20 };
View Code

延伸

  • 双索引技术

以上是关于[刷题] LeetCode 209 Minimum Size Subarray Sum的主要内容,如果未能解决你的问题,请参考以下文章

#Leetcode# 209. Minimum Size Subarray Sum

leetcode 209. Minimum Size Subarray Sum

Leetcode 209: Minimum Size Subarray Sum

leetcode 209. Minimum Size Subarray Sum

LeetCode-209.Minimum Size Subarray Sum

LeetCode-209 Minimum Size Subarray Sum