LeetCode每日一题,220. 存在重复元素 III
先看题目描述
算法和思路
滑动窗口 + 有序集合
我们可以维护一个大小为 k 的滑动窗口,每次遍历到元素 x 时,滑动窗口中包含元素 x 前面的最多 k 个元素,我们检查窗口中是否存在元素落在区间 [x - t,x + t] 中即可
为了快速判断出滑动窗口内是否存在符合条件的元素,我们可以使用有序集合来维护滑动窗口内的元素
注意:为防止整型 int 溢出,我们既可以使用长整型 long,也可以对查找区间 [x - t,x + t] 进行限制,使其落在 int 范围内
算法源码
滑动窗口 + 有序集合
1 | class Solution { |
下面是自己一开始实现的滑动窗口 + 有序集合的方法的代码,实际上维护的是一个长度为 2k 的滑动窗口,运行效率较差
1 | class Solution { |