Contains Duplicate III
程序员文章站
2022-05-14 13:08:18
...
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.
题目中给定一个数组,判断数组中是否存在两个数nums[i]和nums[j],它们之间的差最大为t, 两个下标i和j之间的差最大为k。我们用TreeSet来解决,我们维护一个大小为k的treeset,然后通过subSet方法来判断在区间中是否存在和当前元素差小于等于t的元素。为了防止越界,我们将TreeSet设定成长整型。代码如下:
题目中给定一个数组,判断数组中是否存在两个数nums[i]和nums[j],它们之间的差最大为t, 两个下标i和j之间的差最大为k。我们用TreeSet来解决,我们维护一个大小为k的treeset,然后通过subSet方法来判断在区间中是否存在和当前元素差小于等于t的元素。为了防止越界,我们将TreeSet设定成长整型。代码如下:
public class Solution {
public boolean containsNearbyAlmostDuplicate(int[] nums, int k, int t) {
if(nums == null || nums.length == 0 || t < 0) return false;
TreeSet<Long> set = new TreeSet<Long>();
set.add((long)nums[0]);
for(int i = 1; i < nums.length; i++) {
if(i > k) set.remove((long)nums[i - k - 1]);
long left = (long)nums[i] - t;
long right = (long)nums[i] + t;
if(!set.subSet(left, right + 1).isEmpty()) return true;
set.add((long)nums[i]);
}
return false;
}
}
上一篇: TreeSet
下一篇: TreeSet/map的去重和排序
推荐阅读
-
jQuery中:contains选择器用法实例教程
-
Mysql死锁如何排查:insert on duplicate死锁一次排查分析过程
-
【LeeCode 简单 字符串 python3】557 反转字符串中的单词 III
-
使用mybatis报错【Result Maps collection already contains value for ...BaseResultMap】的解决方法
-
IOS真机运行带有Notification Content target的时候证书报错This application or a bundle it contains has the same bun
-
【I·M·U_Ops】------III------ IMU自动化运维平台之CMDB(admin)
-
解决大于5.7版本mysql的分组报错Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated
-
【转载】C#通过Contains方法判断DataTable中是否存在某个列名
-
清凉光污染:酷冷至尊毁灭者III至尊版机箱体验
-
LeetCode——Duplicate Emails(使用group by以及having解决分组统计结果)