/*
利用treeset 结构 放置k个数 如果超过 则把第一个存进去的数拿出;
每次循环 找出在set中 比当前数字 只小一点 或者只大一点的数字是否满足 t 的条件,满足return true 不满足 加入set中;
*/
class Solution {
public boolean containsNearbyAlmostDuplicate(int[] nums, int k, int t) {
if(nums.length == 0) return false;
TreeSet<Integer> ts = new TreeSet<Integer>();
for(int i = 0; i < nums.length; i++) {
int temp = nums[i];
if(ts.floor(temp) != null && (long)temp - ts.floor(temp) <= t ||
ts.ceiling(temp) != null && ts.ceiling(temp) - (long)temp <= t) {
return true;
} else {
ts.add(nums[i]);
}
if(ts.size() > k) {
ts.remove(nums[i - k]);
}
}
return false;
}
}
Contains Duplicate III leetcode java 走地牙
最新推荐文章于 2019-11-17 15:22:06 发布