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;
}
}

最新文章

  1. WPF DataGrid常用属性记录
  2. MongoDB数据库GroupBy查询使用Spring-data-mongondb的实现
  3. How do you render tooltip on disabled HTML Button
  4. php开启新的进程或者线程
  5. careercup-数组和字符串1.4
  6. Scrum Meeting Alpha - 10
  7. Android使用XUtils框架上传照片(一张或多张)和文本,server接收照片和文字(无乱码)
  8. CMake 条件判断
  9. php引用传值详解
  10. SQLserver 获取当前时间
  11. mybatis的缓存机制(一级缓存二级缓存和刷新缓存)和mybatis整合ehcache
  12. 【Java】-NO.16.EBook.4.Java.1.003-【疯狂Java讲义第3版 李刚】- oop
  13. Windows Phone 8 开发必备资源
  14. [PY3]——面向对象编程(1)
  15. Js注释和对象
  16. charles工具过滤腾讯视频播放器广告
  17. Linux中的中断处理
  18. php *-devel
  19. Selenium2+python自动化35-获取元素属性【转载】
  20. Encourage_by_WeChat

热门文章

  1. linux centos7搭建mysql-5.7.29
  2. Pytest 单元测试框架
  3. bcdedit 替代easybcd 编辑grub
  4. windows上docker部署springboot多实例
  5. Java基础之值传递
  6. mysql小白系列_08 zabbix3.2.6概念及部署
  7. select 后台获取text 并根据text 设置value选中项
  8. iframe中有ajax,设置iframe自适应高度
  9. 日志文件的配置----【logback-spring.xml】
  10. 用STM32的UART实现DMX512