🟡 剑指 Offer II 057. 值和下标之差都在给定的范围内
LeetCode 提示
题目难度 中等
原题链接 🔗 leetcode
#
题解1抄作业1。
思路是 滑动窗口 + 有序集合。Java 的 TreeSet 可以同时支持这两个能力。
强烈推荐 TreeSet.ceiling() 和 TreeSet.floor() 方法
class Solution { public boolean containsNearbyAlmostDuplicate(int[] nums, int k, int t) { TreeSet<Long> set = new TreeSet<>(); for (int i=0; i<nums.length; i++) { Long ceil = set.ceiling((long)nums[i]-(long)t); if (ceil != null && ceil <= (long)nums[i]+(long)t) { return true; } set.add((long)nums[i]);
if (i >= k) { set.remove((long)nums[i-k]); } }
return false; }}