class Solution {
public boolean containsNearbyAlmostDuplicate(int[] nums, int k, int t) {
int n = nums.length;
if(n < 2) return false;
TreeSet<Long> set = new TreeSet<Long>();
/* 首先判断nums[i]是否符合题目要求,如果则
符合,则直接输出true,如果不符合则放到滑
窗口内进行维护。
*/
for(int i = 0;i < n;i ++){
Long e = (long)nums[i];
Long l = set.floor(e);//窗口中小于等于e的最大值
Long r = set.ceiling(e);//窗口中大于等于e的最小值
if(l != null && e - l <= t) return true;
if(r != null && r - e <= t) return true;
set.add(e);
if(set.size() > k) set.remove((long)nums[i - k]);
}
return false;
}
}