滑动窗口

维持左右边界都不回退的一段范围,来求解很多子数组(串的相关问题)

题目

累加和大于等于target的最短子数组长度

    给定一个含有n个正整数的数组和一个正整数target,找到累加和>=target的长度最小的子数组并返回其长度,如果不存在符合条件的子数组返回0。

1
2
3
4
5
6
7
8
9
10
11
12
13
public static int minSubArrayLen(int target, int[] nums){
int ans = Integer.MAX_VALUE;
for (int l = 0,r = 0, sum = 0; r < nums.length; r++){
sum += nums[r];
while (sum - nums[l] >= target){
sum -= nums[l++];
}
if (sum >= target){
ans = Math.min(ans, r - l + 1);
}
}
return ans == Integer.MAX_VALUE ? 0 : ans;
}

无重复字符的最长子串

    给定一个字符串s,请找出其中不含有重复字符的最长子串的长度。

1


滑动窗口
http://2819461143wp.github.io/滑动窗口/
作者
cwdp.sky
发布于
2024年11月13日
许可协议