滑动窗口 [01]

所谓 滑动窗口,就是不断的调节子序列的起始位置和终止位置,从而得出我们要想的结果。

划窗背后的原理:

1.本质上来说,滑窗是双指针,一根指针指向左端点,一根指针指向右端点。
2.右指针移动可以表示扩张窗口,左指针移动表示缩小窗口。
3.如果当前元素满足题目要求时,可以挪动右指针尝试更优解,并且更新需要记录的变量(元素,元素个数++等)
4.如果当前窗口内的元素不满足条件,可以挪动左指针尝试调整,并且更新需要记录的变量(元素,元素个数–等)
5.通过以上步骤窗口就开始“滑动”起来,在滑动过程中,要记得及时更新答案。一般为求最大或最小。

先给出滑动窗口算法框架

/*滑动窗口算法框架*/
private static void minWindow(String s,String t){
	//滑动窗口左右侧位置指针
	int left = 0,right = 0;
	while (right < s.length()){
		//滑动窗口右边增加
		right ++;
		if(滑动窗口满足目标){
			//对窗口内元素操作
        }
		//滑动窗口左边缩小
		while(滑动窗口缩小条件){
		//
		left ++;
        }
    }
}

209.长度最小的子数组
3.无重复字符的最长字串
6.子数组最大平均数Ⅰ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值