题目链接:点击这里
class Solution {
public boolean containsNearbyAlmostDuplicate(int[] nums, int k, int t) {
TreeSet<Integer> set = new TreeSet<>();
for(int i = 0; i < nums.length; i++) {
// 返回大于等于nums[i]的最小元素,如果不存在这样的元素返回null
Integer right = set.ceiling(nums[i]);
if(right != null && (long)right - nums[i] <= t) return true;
// 返回小于等于nums[i]的最大元素,如果不存在这样的元素返回null
Integer left = set.floor(nums[i]);
if(left != null && (long)nums[i] - left <= t) return true;
set.add(nums[i]);
if(set.size() > k) set.remove(nums[i - k]);
}
return false;
}
}