letcode 之 滑动窗口

Posted 渔歌遥_青

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了letcode 之 滑动窗口相关的知识,希望对你有一定的参考价值。

 

滑动窗口问题

其实就是一个队列,比如例题中的 abcabcbb,进入这个队列(窗口)为 abc 满足题目要求,当再进入 a,队列变成了 abca,这时候不满足要求。所以,我们要移动这个队列!

如何移动?

我们只要把队列的左边的元素移出就行了,直到满足题目要求!

一直维持这样的队列,找出队列出现最长的长度时候,求出解!

使用python中的set(),并记录一个队列头部的指针,可以实现队列。

 

 使用了集合,集合是有顺序的,所以当当前元素在集合中存在时,不断将最左的元素移除直到当前元素已被移出集合。

注意移动的时候是一直移动直到当前的元素不在窗口中有重复值为止。

 

使用字典,字典的键值是元素值,字典的value是最右出现的键值元素的位置+1,因为如果新加入滑动窗口的元素若在字典中且此值依然在滑动窗口中,则将滑动窗口最左的指针移到字典此值的value处,即下一个位置。

以上是关于letcode 之 滑动窗口的主要内容,如果未能解决你的问题,请参考以下文章

leetcode之滑动窗口算法小结

leetcode之滑动窗口算法小结

Python之滑动窗口

4-6:TCP协议之滑动窗口

Spark-Streaming之window滑动窗口应用

算法题解之滑动窗口