题目描述:
给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度。如果不存在符合条件的连续子数组,返回 0。
示例:
输入: s = 7, nums = [2,3,1,2,4,3]
输出: 2
解释: 子数组 [4,3] 是该条件下的长度最小的连续子数组。
Java代码:
class Solution {
public int minSubArrayLen(int s, int[] nums) {
if(nums.length == 0) return 0;
int ans = Integer.MAX_VALUE;
int left = 0,right = 0,sum = 0;
while(right < nums.length) {
sum += nums[right];
right++;
while(sum >= s) {
ans = Math.min(ans, right - left);
sum -= nums[left];
left++;
}
}
return ans == Integer.MAX_VALUE? 0 : ans;
}
}
网友评论