Contains Duplicate III
给一个数组, k和t, 问有没有两个数差是k, index的差是t. 这个题不难, 但是全是corn cases.
public class Solution {
public boolean containsNearbyAlmostDuplicate(int[] nums, int k, int t) {
TreeSet<Integer> treeset = new TreeSet<>();
for (int i = 0; i < nums.length; ++i) {
Integer floor = nums[i] - t;
Integer ceiling = nums[i] + t + 1;
if ((long) nums[i] - (long) (t) < -2147483647) floor = Integer.MIN_VALUE;
if ((long) nums[i] + (long) (t) + 1 > 2147483646) ceiling = Integer.MAX_VALUE;
if (t >= 0 && treeset.subSet(floor, ceiling).size() != 0) return true;
treeset.add(nums[i]);
if (i >= k) treeset.remove(nums[i - k]);
}
return false;
}
}