Java实现 LeetCode 220 存在重复元素 III(三)
2024-09-04 22:13:57
220. 存在重复元素 III
给定一个整数数组,判断数组中是否有两个不同的索引 i 和 j,使得 nums [i] 和 nums [j] 的差的绝对值最大为 t,并且 i 和 j 之间的差的绝对值最大为 ķ。
示例 1:
输入: nums = [1,2,3,1], k = 3, t = 0
输出: true
示例 2:
输入: nums = [1,0,1,1], k = 1, t = 2
输出: true
示例 3:
输入: nums = [1,5,9,1,5,9], k = 2, t = 3
输出: false
class Solution {
public boolean containsNearbyAlmostDuplicate(int[] nums, int k, int t) {
// 滑动窗口结合查找表,此时滑动窗口即为查找表本身(控制查找表的大小即可控制窗口大小)
TreeSet<Long> set = new TreeSet<>();
for (int i = 0; i < nums.length; i++) {
// 边添加边查找
// 查找表中是否有大于等于 nums[i] - t 且小于等于 nums[i] + t 的值
Long ceiling = set.ceiling((long) nums[i] - (long) t);
if (ceiling != null && ceiling <= ((long) nums[i] + (long) t)) {
return true;
}
// 添加后,控制查找表(窗口)大小,移除窗口最左边元素
set.add((long) nums[i]);
if (set.size() == k + 1) {
set.remove((long) nums[i - k]);
}
}
return false;
}
}
最新文章
- WPF DataGrid常用属性记录
- MongoDB数据库GroupBy查询使用Spring-data-mongondb的实现
- How do you render tooltip on disabled HTML Button
- php开启新的进程或者线程
- careercup-数组和字符串1.4
- Scrum Meeting Alpha - 10
- Android使用XUtils框架上传照片(一张或多张)和文本,server接收照片和文字(无乱码)
- CMake 条件判断
- php引用传值详解
- SQLserver 获取当前时间
- mybatis的缓存机制(一级缓存二级缓存和刷新缓存)和mybatis整合ehcache
- 【Java】-NO.16.EBook.4.Java.1.003-【疯狂Java讲义第3版 李刚】- oop
- Windows Phone 8 开发必备资源
- [PY3]——面向对象编程(1)
- Js注释和对象
- charles工具过滤腾讯视频播放器广告
- Linux中的中断处理
- php *-devel
- Selenium2+python自动化35-获取元素属性【转载】
- Encourage_by_WeChat