- 概念:双指针思想,两个指针指向的元素之间形成一个窗口。
- 应用条件:
- 线性数据结构
- 子线性数据结构的最值、目标值问题
- 原问题可暴力解决
class Solution {
public:
int minSubArrayLen(int target, vector<int>& nums) {
int total=0,turn=INT_MAX;
//窗口滑动
for(int end=0,begin=0;end<nums.size();end++)//窗口右指针迭代
{
total+=nums[end];//累计窗口所有元素
//窗口收缩
while(total>=target){
turn=min(turn,end-begin+1);//更新最短子串长度值
total-=nums[begin];
begin++;//窗口左指针迭代,收缩窗口
}
}
return turn==INT_MAX?0:turn;
}
};