public boolean containsNearbyAlmostDuplicate(int[] nums, int k, int t) {
if (nums.length == 0)
return false;
TreeSet<Long> set = new TreeSet<>();
for (int i = 0; i < nums.length; i++) {
long num = nums[i];
//num-t<= x <=num+t 查看是否存在这个x 找到大于 num-t的最小值 同时 这个值在[num-t,num+t]这个范围内就是成功的
Long ceiling = set.ceiling((long)num - t);
if (ceiling != null && ceiling <=(long) num + t)
return true;
set.add(num);
if (set.size() == k + 1) {
set.remove((long)nums[i - k]);
}
}
return false;
}
这里有2个问题:
-t=<|i-j|=<t [-2,2]
1-(-1)=2 其实是满足 但是会返回false 为什么?
辛苦老师!本身小白,感觉我太能问问题了,不过其实我已经看了很多解法的解释,和文章,感觉总是顺着正确的思路去走,反而会出现新的问题 辛苦老师了 ,最好能举个例子