滑动窗口是什么?
不难理解,滑动窗口就是定义2个指针(一个left,一个right),在一个区间[left,right)注意左闭右开进行搜索等
example
***leetcode 209题***
#define min(a, b) ((a) < (b) ? (a) : (b))
int minSubArrayLen(int s, int* nums, int numsSize){
if (nums == NULL || numsSize == 0) {
return 0;
}
int left = 0;
int right = 0;
int res = INT_MAX;
int sum = 0;
while (right < numsSize) { //right没到最右边的前提下
sum += nums[right++]; //求和,直到区间大于或等于目标k
while (sum >= s) { //区间达到K
res = min(res, right - left); //对区间进行更新
sum -= nums[left++]; //移动left
}
}
return res != INT_MAX ? res : 0;
}
> 注释:INT_MAX=2147483647
谢谢浏览,互勉!