LeetCode Contains Duplicate III

来源:互联网 发布:学会python要多久 编辑:程序博客网 时间:2024/05/01 15:56

思路:

滑动窗口大小为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;    }}
0 0
原创粉丝点击