Leetcode 220. 存在重复元素 III 解题思路及C++实现
解题思路:
使用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++实现相关推荐
- LeetCode—220. 存在重复元素 III
220. 存在重复元素 III 题目描述: 给你一个整数数组 nums 和两个整数 k 和 t .请你判断是否存在 两个不同下标 i 和 j,使得 abs(nums[i] - nums[j]) < ...
- leetcode 220. 存在重复元素 III(排序)
给你一个整数数组 nums 和两个整数 k 和 t .请你判断是否存在 两个不同下标 i 和 j,使得 abs(nums[i] - nums[j]) <= t ,同时又满足 abs(i - j) ...
- Leetcode 219. 存在重复元素 II 解题思路及C++实现
解题思路: 使用 unordered_map 来遍历一次数组,并将同一个数值对应的索引存在一个vector中,所以,vector中的索引刚好也是从小到大排好序的.然后看看vector.size() 大 ...
- LeetCode 220. 存在重复元素 III(lower_bound)
文章目录 1. 题目 2. 解题 1. 题目 给定一个整数数组,判断数组中是否有两个不同的索引 i 和 j,使得 nums [i] 和 nums [j] 的差的绝对值最大为 t,并且 i 和 j 之间 ...
- 【桶】220.存在重复元素 III 【LeetCode】
220.存在重复元素 III [LeetCode] 给你一个整数数组 nums 和两个整数 k 和 t.请你判断是否存在 两个不同下标i和j,使得 abs(nums[i] - nums[j]) < ...
- leetcode 220. Contains Duplicate III | 220. 存在重复元素 III (Treeset解法+分桶解法)
题目 https://leetcode.com/problems/contains-duplicate-iii/ 题解 方法1:Treeset 解法,滑动窗口 & 二分 思路参考:https: ...
- Leetcode 217. 存在重复元素 解题思路及C++实现
方法一:暴力法 解题思路: 利用 unordered_map 来对出现的数字进行计数,一旦出现有重复数字,就返回true,否则就返回false. class Solution { public:boo ...
- LeetCode 496. 下一个更大元素 I 解题思路及C++实现
解题思路: 因为这两个int型的vector中不包含重复元素,所以考虑使用c++中的unordered_map,对num2进行遍历,找到每一个元素的下一个更大元素,这样的话,时间复杂度就是O(n). ...
- Leetcode 260. 只出现一次的数字 III 解题思路及C++实现
解题思路: 这道题真有点玄乎,请看:https://blog.csdn.net/smile_watermelon/article/details/47750249 先mark,之后再仔细研究. cla ...
最新文章
- 在Linux下配置TCP/IP
- 斜率小于0的连线数量 51Nod - 1107 (树状数组+离散化)
- opencv画直线,矩形
- 平安iq测试没通过的话影响入职吗_从外包测试到阿里巴巴,一位三本女生逆袭之路...
- Gradle构建中:No cached version available for offline mode解决方案
- 《剑指Offer》24:反转链表
- java读取文件夹_Java读取某个文件夹下的所有文件(支持多级文件夹)
- Python中的各种if语句(if条件判断、if...else、if...elif...else、if...else嵌套)
- 转载:word排版之长英文单词自动换行
- 观看台式计算机组成观后感,计算机组成原理实验一:运算器实验
- 2.5 VB编程基础--运算符和表达式
- Hadoop 配置文件存放位置
- box-sizing失效情况
- Vue看板娘教程详细版
- 工程思维:把每件事都当作一个项目来推进
- Java实现 LeetCode 383 赎金信
- java文字格斗游戏
- bt_迅雷_种子文件后缀名
- 高仿今日头条视频列表功能
- 拼多多无货源店群模式现在还能赚钱吗?(小珏)
热门文章
- vue 怎么样不重复往数组里插入数据_Vue.js在数组中插入重复数据的实现代码分享...
- 判断元素是否在ndarray_暨南大学药学院考研~手性的判断与相关介绍
- GDB多进程调试(转)
- 图书管理系统之外键的增删改查
- TypeScript入门(三)面向对象特性
- Linux内存信息查看——free命令
- 事件委托能够优化js性能
- input onclick=window.location.href='https://www'不能跳转问题。
- MVC三层+会话层+线程安全+抽象工厂+DataBase First的基础框架
- 【jQuery】用jQuery给文本框添加只读属性【readOnly】