/* * 220. Contains Duplicate III * 1.2 by Mingyang * TreeSet数据结构(Java)使用红黑树实现,是平衡二叉树的一种。 * 该数据结构支持如下操作: * 1. floor()方法返set中≤给定元素的最大元素;如果不存在这样的元素,则返回 null。 * 2. ceiling()方法返回set中≥给定元素的最小元素;如果不存在这样的元素,则返回 null。 */
public boolean containsNearbyAlmostDuplicate(int[] nums, int k, int t) { if(nums == null || k < 0 || t < 0) return false; TreeSet<Integer> set = new TreeSet<Integer>(); for(int i = 0; i < nums.length; i++){ if(i - k - 1 >= 0) set.remove(nums[i - k - 1]); int n = nums[i]; if(set.floor(n) != null && n <= t + set.floor(n) || set.ceiling(n) != null && set.ceiling(n) <= t + n) return true; set.add(n); } return false; }