码迷,mamicode.com
首页 > 其他好文 > 详细

220. Contains Duplicate III

时间:2016-12-05 07:51:59      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:nbsp   rac   dup   diff   and   treeset   object   between   javase   

Given an array of integers, find out whether there are two distinct indices i and j in the array such that the difference between nums[i] and nums[j] is at most t and the difference between i and j is at most k.

维护一个windon

treeset:

ceiling(E e)

Returns the least element in this set greater than or equal to the given element, or null if there is no such element.
 
floor(E e)
Returns the greatest element in this set less than or equal to the given element, or null if there is no such element.
 
remove(Object o)
Removes the specified element from this set if it is present.
 
public class Solution {
    public boolean containsNearbyAlmostDuplicate(int[] nums, int k, int t) {
        if(nums.length < 2 || t < 0) return false;
        TreeSet<Integer> set = new TreeSet<Integer>();
        for(int i = 0 ; i < nums.length; i++){
            Integer floor = set.floor(nums[i] + t);
            Integer ceil = set.ceiling(nums[i] - t);
            if(floor != null && floor >= nums[i] || ceil != null && ceil <= nums[i])
                return true;
            set.add(nums[i]);
            if(i >= k) set.remove(nums[i-k]);
        }
        return false;
    }
}

 

220. Contains Duplicate III

标签:nbsp   rac   dup   diff   and   treeset   object   between   javase   

原文地址:http://www.cnblogs.com/joannacode/p/6132588.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!