滑动窗口解决最小连续子数组问题(C语言)

    xiaoxiao2022-07-02  112

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

    示例: 

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

     

    int minSubArrayLen(int s, int* nums, int numsSize){      int l=0, r=-1;      int sum=0;      int len=numsSize+1;      while(l<numsSize){          if((r+1<numsSize) && (sum<s))          {               r++;               sum +=nums[r];          }          else          {               sum -=nums[l];               l++;          }          if(sum>=s)              len = (len<(r-l+1)?len:(r-l+1));      }     if(len==(numsSize+1))          return 0;     return len; }

    最新回复(0)