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

LeetCode Contains Duplicate III

2015-11-01 19:06 323 查看
思路:

滑动窗口大小为k,在窗口内如果有一对差值<=t的数,那么返回true,扫描完数组中全部的数,如果都不存在上面的条件,则返回false。

借助数据结构来找到窗口中与要加入的值的最小差值。

Java code:

public class Solution {
public boolean containsNearbyAlmostDuplicate(int[] nums, int k, int t) {
TreeSet<Integer> set = new TreeSet<Integer>();
for(int i = 0; i < nums.length; ++i) {
if(set.size() == k + 1) set.remove(nums[i - k - 1]);
if(set.floor(nums[i]) != null && nums[i] <= t + set.floor(nums[i])) return true;
if(set.ceiling(nums[i]) != null && set.ceiling(nums[i]) <= t + nums[i]) return true;
set.add(nums[i]);
}
return false;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: