Contains Duplicate III
Posted 北叶青藤
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 +1 12 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的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode220. Contains Duplicate III
Leetcode 220. 存在重复元素 III (Contains Duplicate III)