首页 > 代码库 > Contains Duplicate III
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] andnums[j] is at most t and the difference between i and j is at most k.
1 public class Solution { 2 public boolean containsNearbyAlmostDuplicate(int[] nums, int k, int t) { 3 if(nums==null||nums.length<2||k<0||t<0) 4 return false; 5 6 TreeSet<Long> set = new TreeSet<Long>(); 7 for(int i=0; i<nums.length; i++){ 8 long curr = (long) nums[i]; 9 10 long leftBoundary = (long) curr-t;11 long rightBoundary = (long) curr+t+1; //right boundary is exclusive, so +112 SortedSet<Long> sub = set.subSet(leftBoundary, rightBoundary);13 if(sub.size()>0)14 return true;15 16 set.add(curr); 17 18 if(i>=k){ // or if(set.size()>=k+1)19 set.remove((long)nums[i-k]);20 }21 }22 23 return false;24 }25 }
Contains Duplicate III
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。