首页 > 代码库 > 220. Contains Duplicate III
220. Contains Duplicate III
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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。