您的位置:首页 > 大数据 > 人工智能

Contains Duplicate III

2015-09-27 18:26 357 查看
题意:

给定一个数组,判断数据是否含有两个元素i,j,距离不大于k,值不大于t;

分析:

用Treeset,因为其有两个特别好用的函数floor(n)和ceiling(n),分别返回集合中刚大于n和刚小于n的元素,没有的话返回null;

参考代码:
http://www.programcreek.com/2014/06/leetcode-contains-duplicate-iii-java/
public 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 c = nums[i];
if ((set.floor(c) != null && c <= set.floor(c) + t)
|| (set.ceiling(c) != null && c >= set.ceiling(c) -t))
return true;

set.add(c);

if (i >= k)
set.remove(nums[i - k]);
}

return false;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: