# LeetCode Contains Duplicate III

Description:

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.

Solution:

import java.util.*;

public class Solution {
public boolean containsNearbyAlmostDuplicate(int[] nums, int k, int t) {
if (k < 1 || t < 0)
return false;
TreeSet<Integer> set = new TreeSet<Integer>();

int n = nums.length;
long number;
for (int i = 0; i < n; i++) {
if (set.floor((nums[i])) != null) {
number = set.floor((nums[i]));
if (number >= nums[i] - t)
return true;
}
if (set.ceiling(nums[i]) != null) {
number = set.ceiling(nums[i]);
if (number <= nums[i] + t)
return true;
}

if (i >= k) {
set.remove(nums[i - k]);
}
}

return false;
}

public static void main(String[] args) {
Solution s = new Solution();
System.out.println(s.containsNearbyAlmostDuplicate(new int[] { 2, 4 },
1, 1));
}
}

• 本文已收录于以下专栏：

举报原因： 您举报文章：LeetCode Contains Duplicate III 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)