220. 存在重复元素 III
难度中等331
给你一个整数数组 nums
和两个整数 k
和 t
。请你判断是否存在两个下标 i
和 j
,使得 abs(nums[i] - nums[j]) <= t
,同时又满足 abs(i - j) <= k
。
如果存在则返回 true
,不存在返回 false
。
示例 1:
1 | 输入:nums = [1,2,3,1], k = 3, t = 0 |
示例 2:
1 | 输入:nums = [1,0,1,1], k = 1, t = 2 |
示例 3:
1 | 输入:nums = [1,5,9,1,5,9], k = 2, t = 3 |
提示:
0 <= nums.length <= 2 * 10^4
-2^31 <= nums[i] <= 2^31 - 1
0 <= k <= 104
0 <= t <= 2^31 - 1
有序集合+滑动窗口
滑动窗口维护一个长度为k
的区域,有序集合快速查找集合中与当前数字最相近的那个数字(这个查找过程的时间复杂度是O(log(n))
1 | class Solution { |
桶排序
1 | class Solution { |