Skip to content

Commit 5a64a97

Browse files
committed
Contains Duplicate I & II
1 parent ca2c3cb commit 5a64a97

File tree

5 files changed

+110
-0
lines changed

5 files changed

+110
-0
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,8 @@
122122
+ [211 Add and Search Word - Data structure design(Trie树)](algorithms/AddandSearchWord)
123123
+ [213 House Robber II(DP)](algorithms/HouseRobberII)
124124
+ [215 Kth Largest Element in an Array(快排partition函数)](algorithms/KthLargestElementinanArray)
125+
+ [217 Contains Duplicate(hashset)](algorithms/ContainsDuplicate)
126+
+ [219 Contains Duplicate II(hashmap)](algorithms/ContainsDuplicateII)
125127

126128
## Database
127129

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
## Contains Duplicate
2+
3+
Given an array of integers, find if the array contains any duplicates. Your function should return true if any value appears at least twice in the array, and it should return false if every element is distinct.
4+
5+
## Solution
6+
7+
直接使用hashtable即可
8+
9+
```cpp
10+
bool containsDuplicate(vector<int> &nums) {
11+
unordered_set<int> set;
12+
for (int i : nums) {
13+
if (set.find(i) != set.end())
14+
return true;
15+
else
16+
set.insert(i);
17+
}
18+
return false;
19+
}
20+
```
21+
22+
## 扩展
23+
24+
[Contains Duplicate](../ContainsDuplicate): 判断一个数组是否存在重复元素
25+
[Contains Duplicate II](../ContainsDuplicateII):判断一个数组在指定距离内是否存在重复元素
26+
[Contains Duplicate III](../ContainsDuplicateIII):判断一个数组在指定距离内是否存在元素距离小于t
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#include <vector>
2+
#include <unordered_set>
3+
#include <string>
4+
#include <iostream>
5+
using namespace std;
6+
class Solution {
7+
public:
8+
bool containsDuplicate(vector<int> &nums) {
9+
unordered_set<int> set;
10+
for (int i : nums) {
11+
if (set.find(i) != set.end())
12+
return true;
13+
else
14+
set.insert(i);
15+
}
16+
return false;
17+
}
18+
};
19+
int main(int argc, char **argv)
20+
{
21+
Solution solution;
22+
vector<int> nums = {2,3,4,1};
23+
cout << solution.containsDuplicate(nums) << endl;
24+
return 0;
25+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
## Contains Duplicate II
2+
3+
Given an array of integers and an integer k, find out whether there there are two distinct indices i and j in the array such that nums[i] = nums[j] and the difference between i and j is at most k.
4+
5+
## Solution
6+
7+
使用hashmap,key存储值,value存储索引, 若`nums[i]`在hashmap中,则若`i - map[nums[i]] <= k`, 返回true
8+
9+
```cpp
10+
bool containsNearbyDuplicate(vector<int> &nums, int k) {
11+
unordered_map<int, int> map;
12+
int n = nums.size();
13+
for (int i = 0; i < n; ++i) {
14+
if (map.find(nums[i]) != map.end()) {
15+
int s = map[nums[i]];
16+
if (i - s <= k)
17+
return true;
18+
}
19+
map[nums[i]] = i;
20+
}
21+
return false;
22+
}
23+
```
24+
25+
## 扩展
26+
27+
[Contains Duplicate](../ContainsDuplicate): 判断一个数组是否存在重复元素
28+
[Contains Duplicate II](../ContainsDuplicateII):判断一个数组在指定距离内是否存在重复元素
29+
[Contains Duplicate III](../ContainsDuplicateIII):判断一个数组在指定距离内是否存在元素距离小于t
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#include <vector>
2+
#include <unordered_map>
3+
#include <string>
4+
#include <iostream>
5+
using namespace std;
6+
class Solution {
7+
public:
8+
bool containsNearbyDuplicate(vector<int> &nums, int k) {
9+
unordered_map<int, int> map;
10+
int n = nums.size();
11+
for (int i = 0; i < n; ++i) {
12+
if (map.find(nums[i]) != map.end()) {
13+
int s = map[nums[i]];
14+
if (i - s <= k)
15+
return true;
16+
}
17+
map[nums[i]] = i;
18+
}
19+
return false;
20+
}
21+
};
22+
int main(int argc, char **argv)
23+
{
24+
Solution solution;
25+
vector<int> nums = {2,3,4,1};
26+
cout << solution.containsNearbyDuplicate(nums, 1) << endl;
27+
return 0;
28+
}

0 commit comments

Comments
 (0)