标签:
/* * 220. Contains Duplicate III * 1.2 by Mingyang * TreeSet数据结构(Java)使用红黑树实现,是平衡二叉树的一种。 * 该数据结构支持如下操作: * 1. floor()方法返set中≤给定元素的最大元素;如果不存在这样的元素,则返回 null。 * 2. ceiling()方法返回set中≥给定元素的最小元素;如果不存在这样的元素,则返回 null。 */ public static boolean containsNearbyAlmostDuplicate(int[] nums, int k, int t) { if(k < 1 || t < 0) return false; TreeSet<Integer> set = new TreeSet<Integer>(); for(int i = 0; i < nums.length; i++){ 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; //这里只做了大小的判断,所以我们还得更多的引入一个位置的概念在里面,所以我们需要控制我们的长度在k,利用滑动窗口的思想 set.add(n); if (i >= k) //也具有滑动窗口的思想在里面!!!只要超过了边界,就自动把最下面的边界给取消 set.remove(nums[i - k]); } return false; }
标签:
原文地址:http://www.cnblogs.com/zmyvszk/p/5579343.html