Contains Duplicate II
来源:互联网 发布:java类的主方法是啥 编辑:程序博客网 时间:2024/06/07 09:50
Given an array of integers and an integer k, find out whether there are two distinct indices i and j in the array such that nums[i] = nums[j] and the absolute difference between i and j is at most k.
思想:创建一个集合,在这个集合中维护k个元素,这k个元素是相对于当前遍历的元素的前k个元素,当遍历一个新的元素时,检查前k个元素中是否有相同的元素出现。
#include<iostream>#include<unordered_set>#include<vector>using namespace std;class Solution {public: bool containsNearbyDuplicate(vector<int>& nums, int k) { unordered_set<int> preKValueSet; if(k <= 0) return false; if(k >= nums.size()) k = nums.size() - 1; for(int i = 0; i < nums.size(); i++) { if(i > k) preKValueSet.erase(nums[i - k - 1]); if(preKValueSet.find(nums[i]) != preKValueSet.end()) return true; preKValueSet.insert(nums[i]); } return false; }};
还有一种使用哈希表的方式如下
class Solution {public: bool containsNearbyDuplicate(vector<int>& nums, int k) { unordered_map<int, int> m; for (int i = 0; i < nums.size(); ++i) { if (m.find(nums[i]) != m.end() && i - m[nums[i]] <= k) return true; else m[nums[i]] = i; } return false; }};
阅读全文
0 0
- Contains Duplicate && Contains Duplicate II
- [LeetCode]Contains Duplicate II
- Contains Duplicate II
- [LeetCode] Contains Duplicate II
- leetcode Contains Duplicate II
- LeetCode Contains Duplicate II
- [leetcode] Contains Duplicate II
- LeetCode Contains Duplicate II
- LeetCode219:Contains Duplicate II
- #219 Contains Duplicate II
- 219. Contains Duplicate II
- 【leetcode】Contains Duplicate II
- leetcode--Contains Duplicate II
- 219Contains Duplicate II
- Contains Duplicate II
- Contains Duplicate II
- Contains Duplicate II
- Leetcode_219 Contains Duplicate II
- tensorflow中的lrn函数详解
- 加快QT工程编译速度
- Eclipse问题集
- 【数据结构】拾遗(一):图的邻接矩阵创建以及其深广度遍历C++实现
- 垃圾回收的算法与实现 pdf
- Contains Duplicate II
- Java GC专家系列1:理解Java垃圾回收
- Android_Framework_WindowManagerService_总述
- Python 爬虫简单实战之CSDN
- Python初学笔记
- CDQ分治--模板 BZOJ 3262--陌上花开【三维偏序】
- bootstrap-markdown使用
- c#winform选择文件,文件夹,打开指定目录方法
- Android屏幕适配问题