题目描述: 给定一个含有n个正整数的数组和一个正整数target。 找出该数组中满足其和≥ target的长度最小的连续子数组[nums l , nums l+1 , ..., nums r-1 , nums
题目描述:
给定一个含有 n 个正整数的数组和一个正整数 target 。
找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。
分析:
方法一:暴力解决法(双层循环)
方法二:滑动窗口法
代码实现:
class Solution {public int minSubArrayLen(int target, int[] nums) {
int left=0;
int sum=0;
int result=Integer.MAX_VALUE; //表示的是整型最大值
for(int right=0;right<nums.length;right++){
sum+=nums[right]; //右指针移动求和
while(sum>=target){
result=Math.min(result,right-left+1); //调用Math库中的比较大小的函数
sum-=nums[left++]; //左指针移动
}
}
return result==Integer.MAX_VALUE?0:result; //通过三目运算符来进行比较
}
}