滑动窗口

滑动窗口思想

思路

1、我们在字符串s中使用双指针的左右指针技巧,初始化left= right = 0;把这个索引闭区间[left,rigth]称为一【窗口】。
2、我们先不断的增加right指针扩大窗口[left,right],直到窗口中的字符串符合要求(包含T中所有的字符)
3、此时,停止增加right,转而不断增加left指针,缩小活动窗口[left,rigth],直到窗口中的字符不在符合要求(不包含T中所有的字符了)。同时,每次增加left,我们都要更新一轮结果
4、重复第二步和第三步,直到right达到字符串s的尽头。

伪代码

var s, t;
var res = '';
var left = 0,right = 0;
while(right<s.length-1){
	windows.add(s[right]);
	right++:
	while(window符合要求){
		res = minLen(res,window);
		window.remove(s[left]);
		left++;
	}
}
return res;

详情请参考滑动窗口详解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值