解题思路:

使用set集合来实现滑动窗口k,对窗口内的数进行比较,得到结果。

使用两个指针i、j,来确定窗口位置,i走在前面,j在后面。因为数组内这两个数的差值绝对值限制为:| x - nums[i] | < t,所以,有 nums[i] - t < x < nums[i] + t,所以,我们要在set s中找到nums[i] - t所在的位置,如果找到了,说明窗口内有满足这左侧不等式的数x,再判断右侧不等式x < nums[i] + t是否满足,如果均满足,即找到,返回true。如果不满足其一,就将窗口向右平移一位。

主要使用了lower_bound函数。

class Solution {
public:bool containsNearbyAlmostDuplicate(vector<int>& nums, int k, int t) {set<long long> s;for(int i = 0, j = 0; i < nums.size(); i++){if(i - j > k){s.erase(nums[j++]);}auto it = s.lower_bound((long long)nums[i] - t);if(it != s.end() && abs(*it - nums[i]) <= t) return true;s.insert(nums[i]);}return false;}
};

Leetcode 220. 存在重复元素 III 解题思路及C++实现相关推荐

  1. LeetCode—220. 存在重复元素 III

    220. 存在重复元素 III 题目描述: 给你一个整数数组 nums 和两个整数 k 和 t .请你判断是否存在 两个不同下标 i 和 j,使得 abs(nums[i] - nums[j]) < ...

  2. leetcode 220. 存在重复元素 III(排序)

    给你一个整数数组 nums 和两个整数 k 和 t .请你判断是否存在 两个不同下标 i 和 j,使得 abs(nums[i] - nums[j]) <= t ,同时又满足 abs(i - j) ...

  3. Leetcode 219. 存在重复元素 II 解题思路及C++实现

    解题思路: 使用 unordered_map 来遍历一次数组,并将同一个数值对应的索引存在一个vector中,所以,vector中的索引刚好也是从小到大排好序的.然后看看vector.size() 大 ...

  4. LeetCode 220. 存在重复元素 III(lower_bound)

    文章目录 1. 题目 2. 解题 1. 题目 给定一个整数数组,判断数组中是否有两个不同的索引 i 和 j,使得 nums [i] 和 nums [j] 的差的绝对值最大为 t,并且 i 和 j 之间 ...

  5. 【桶】220.存在重复元素 III 【LeetCode】

    220.存在重复元素 III [LeetCode] 给你一个整数数组 nums 和两个整数 k 和 t.请你判断是否存在 两个不同下标i和j,使得 abs(nums[i] - nums[j]) < ...

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

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

  7. Leetcode 217. 存在重复元素 解题思路及C++实现

    方法一:暴力法 解题思路: 利用 unordered_map 来对出现的数字进行计数,一旦出现有重复数字,就返回true,否则就返回false. class Solution { public:boo ...

  8. LeetCode 496. 下一个更大元素 I 解题思路及C++实现

    解题思路: 因为这两个int型的vector中不包含重复元素,所以考虑使用c++中的unordered_map,对num2进行遍历,找到每一个元素的下一个更大元素,这样的话,时间复杂度就是O(n). ...

  9. Leetcode 260. 只出现一次的数字 III 解题思路及C++实现

    解题思路: 这道题真有点玄乎,请看:https://blog.csdn.net/smile_watermelon/article/details/47750249 先mark,之后再仔细研究. cla ...

最新文章

  1. 在Linux下配置TCP/IP
  2. 斜率小于0的连线数量 51Nod - 1107 (树状数组+离散化)
  3. opencv画直线,矩形
  4. 平安iq测试没通过的话影响入职吗_从外包测试到阿里巴巴,一位三本女生逆袭之路...
  5. Gradle构建中:No cached version available for offline mode解决方案
  6. 《剑指Offer》24:反转链表
  7. java读取文件夹_Java读取某个文件夹下的所有文件(支持多级文件夹)
  8. Python中的各种if语句(if条件判断、if...else、if...elif...else、if...else嵌套)
  9. 转载:word排版之长英文单词自动换行
  10. 观看台式计算机组成观后感,计算机组成原理实验一:运算器实验
  11. 2.5 VB编程基础--运算符和表达式
  12. Hadoop 配置文件存放位置
  13. box-sizing失效情况
  14. Vue看板娘教程详细版
  15. 工程思维:把每件事都当作一个项目来推进
  16. Java实现 LeetCode 383 赎金信
  17. java文字格斗游戏
  18. bt_迅雷_种子文件后缀名
  19. 高仿今日头条视频列表功能
  20. 拼多多无货源店群模式现在还能赚钱吗?(小珏)

热门文章

  1. vue 怎么样不重复往数组里插入数据_Vue.js在数组中插入重复数据的实现代码分享...
  2. 判断元素是否在ndarray_暨南大学药学院考研~手性的判断与相关介绍
  3. GDB多进程调试(转)
  4. 图书管理系统之外键的增删改查
  5. TypeScript入门(三)面向对象特性
  6. Linux内存信息查看——free命令
  7. 事件委托能够优化js性能
  8. input onclick=window.location.href='https://www'不能跳转问题。
  9. MVC三层+会话层+线程安全+抽象工厂+DataBase First的基础框架
  10. 【jQuery】用jQuery给文本框添加只读属性【readOnly】