题目
给定一个含有 n 个正整数的数组和一个正整数 target 。
找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。
coding
class Solution {
/**
滑动窗口,变相的双指针玩法
*/
public int minSubArrayLen(int target, int[] nums) {
// 答案值
int ans = Integer.MAX_VALUE;
// 左边界
int left = 0;
// 总和
int sum = 0;
// 使用for循环控制右边界
for(int i = 0; i <= nums.length- 1; i++){
sum += nums[i];
// while 控制左边界,不断的来试探最优解法(题意满足大于等于)
while(left <= i && sum >= target){
// 结果值取最小值
ans = Math.min(ans, i - left + 1);
// 左指针过来就是减去总和
sum -= nums[left];
left ++;
}
}
return ans == Integer.MAX_VALUE ? 0:ans;
}
}
总结
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/96097.html