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.

题目大意:给定一个数组,和两个数t和k。判断是否满足下列条件的数。存在两个不同的下标i,j满足: nums[i] - nums[j] | <= t 且 | i - j | <= k。

思路:使用Java中的TreeSet,TreeSet是有序的内部是红黑树实现的。并且内部带有操作方法很方便,会降低问题的复杂度。其实就是一个滑动窗口,把可能满足条件的范围从左向右滑动,直到找出满足条件的数或者窗口滑动完毕。

实现代码:

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>();for(int i=0; i<nums.length; i++) {int cur = nums[i];Integer floor = set.floor(cur);Integer ceil = set.ceiling(cur);if(floor != null && cur <= t + floor|| ceil != null && ceil <= t + cur) {return true;}set.add(cur);if(i >= k) {set.remove(nums[i - k]);}}return false;}
}

LeetCode——Contains Duplicate III相关推荐

  1. [LeetCode]Contains Duplicate III

    Contains Duplicate III Given an array of integers, find out whether there are two distinct indices i ...

  2. LeetCode Contains Duplicate III(滑动窗口)

    问题:给出一个数组,要求  思路:第一种方法使用枚举法,对于i,则判断[0,i-k]之间的数与nums[i]的绝对值是否小于等于t. 第二种方法基于set的滑动窗口.在遍历数组时,先看集合中比当前遍历 ...

  3. LeetCode Contains Duplicate III

    12213123 转载于:https://www.cnblogs.com/ZHONGZHENHUA/p/10978937.html

  4. LeetCode 220_Contains Duplicate III

    http://blog.csdn.net/jeasn168... 题目 Given an array of integers, find out whether there are two disti ...

  5. leetcode 220. Contains Duplicate III | 220. 存在重复元素 III (Treeset解法+分桶解法)

    题目 https://leetcode.com/problems/contains-duplicate-iii/ 题解 方法1:Treeset 解法,滑动窗口 & 二分 思路参考:https: ...

  6. LeetCode Path Sum III(前缀和)

    问题: 给定一个二叉树,它的每个结点都存放着一个整数值. 找出路径和等于给定数值的路径总数. 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点). 二叉树 ...

  7. LeetCode House Robber III(动态规划)

    问题:给出一个树,只能隔一层取值,求最大值. 思路:方法一用dp(node)从当前结点开始可以取的最大值.当取node的值时,dp(node)=node.val + dp(node.left.left ...

  8. LeetCode Single Number III(位操作)

    问题:给出一个数组,有两个数只出现一次,其它都出现两次. 思路:先对数组求异或,得到两个数异域的结果.然后确定差异的最低位.再将数组与这个差异位作异域,得到其中的一个数.再与异域结果异域后即得到另外一 ...

  9. LeetCode Two Sum III - Data structure design

    原题链接在这里:https://leetcode.com/problems/two-sum-iii-data-structure-design/ 题目: Design and implement a ...

最新文章

  1. 摘自一个读者读后rework的感受
  2. Django REST framework 简介
  3. GetCallbackEventReference实用讲解
  4. Apache Mahout 简介 通过可伸缩、商业友好的机器学习来构建智能应用程序
  5. 肖仰华 | SIGIR 2018、WWW2018 知识图谱研究综述
  6. tar (child): lbzip2: Cannot exec: No such file or directory 解决方法
  7. Neo4j fails creating index,创建索引失败
  8. java vm art_Android虚拟机art流程:JavaVM 和 JNIEnv 的初始化 - 神农笔记
  9. tomcat-maven-plugin问题汇总
  10. 【CIKM2020】如何更为合适地评测推荐算法? Top-N物品推荐算法评测设置回顾
  11. 【大数据采集技术与应用】【第一章】【大数据采集技术与应用概述】
  12. IDC将中国城市分成六级:每一级具体的城市是那几个市,谢谢回复
  13. Android 拨号盘按键音修改为钢琴音效果实现
  14. 大数据有哪些存储方式?
  15. 小米微信无法连接到服务器1-10087,微信无法连接到服务器【搞定方向】
  16. mac提示dns错误如何解决
  17. 关于自动化诊断测试(CANoe.Diva的应用)
  18. Android实战简易教程-第六十枪(分享一个城市选择功能模块)
  19. Ai虚拟主播软件眨眼摇头点头变的生动活体
  20. pytorch篇---yolov5-权重转换(pt-->onnx-->rknn)

热门文章

  1. 零基础可以学python吗-初学者必知:零基础学习Python真的能学会吗?
  2. 后缀数组总结(转载)
  3. 微信朋友圈技术之道:三个人的后台团队与每日十亿的发布量
  4. 全文搜索技术—Lucene
  5. Java爬虫——网易云热评爬取
  6. Bootstrap排版中地址与引用详解
  7. libvirt 网络
  8. sql server 的 money类型
  9. COMMUNITY SERVER 的架构分析
  10. java面试题 多线程_Java面试常见关于多线程的面试题