Contains Duplicate III
给一个数组, k和t, 问有没有两个数差是k, index的差是t. 这个题不难, 但是全是corn cases.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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; } } |