题目 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。如果不存在符合条件的连续子数组,返回 0。
思想 【Java|长度最小的子数组(Java)】滑动窗口
代码
class Solution {
private int res = Integer.MAX_VALUE;
public int minSubArrayLen(int s, int[] nums) {
if(nums == null)
return 0;
int left = 0;
int right = 0;
int sum = 0;
while(right < nums.length){
sum += nums[right];
while(left <= right && sum >= s){
res = Math.min(res,right - left + 1);
sum -= nums[left];
left++;
}
right++;
}
if(res == Integer.MAX_VALUE)
return 0;
return res;
}
}
推荐阅读
- 408学习专区|数据结构学习笔记(3.栈,队列,数组 4.串)
- 算法技巧|python算法技巧——贪心算法练习及掌握
- 高级数据结构|浙江省赛 —— E. Easy DP Problem(主席树、维护区间前K大值总和)
- 算法|一文看懂pytorch转换ONNX再转换TenserRT
- Java数据结构|《Java数据结构基础》单链表的手动实现
- 一起刷好题|《LeetCode刷题计划》——移除链表元素(三种方法来实现)
- 面试题|【Java实习生面试题系列】-- 多线程篇四
- 蓝桥杯|蓝桥杯系列6——python技巧
- 深入理解二分算法