Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit b52bc4c

Browse files
committed
add Contains Duplicate solution
1 parent f1129b5 commit b52bc4c

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed

Solutions/Contains Duplicate/main.cpp

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
#include <iostream>
2+
#include <unordered_set>
3+
#include <vector>
4+
#include <unordered_map>
5+
#include <algorithm>
6+
#include <map>
7+
using namespace std;
8+
9+
class Solution {
10+
public:
11+
bool containsDuplicate(vector<int>& nums) {
12+
unordered_set<int> set;
13+
for(auto iter = nums.begin(); iter != nums.end(); iter++) {
14+
if (set.find(*iter) == set.end())
15+
set.insert(*iter);
16+
else
17+
return true;
18+
}
19+
return false;
20+
}
21+
bool containsNearbyDuplicate(vector<int>& nums, int k) {
22+
unordered_map<int, int> m;
23+
for(int i = 0; i <= k && i < nums.size(); i++) {
24+
if (m.find(nums[i]) == m.end())
25+
m[nums[i]] = i;
26+
else
27+
return true;
28+
}
29+
for(int i = k+1; i < nums.size(); i++) {
30+
m.erase(nums[i-k-1]);
31+
if (m.find(nums[i]) == m.end())
32+
m[nums[i]] = i;
33+
else
34+
return true;
35+
}
36+
return false;
37+
}
38+
bool containsNearbyAlmostDuplicate(vector<int>& nums, int k, int t) {
39+
map<int, int> m;
40+
int left = 0;
41+
int right = 0;
42+
for (; right < nums.size(); right++) {
43+
if (right - left > k && m.find(nums[left]) != m.end())
44+
m.erase(nums[left++]);
45+
auto low = m.lower_bound(nums[right] - t);
46+
if (low != m.end() && abs(low->first - nums[right]) <= t)
47+
return true;
48+
m[nums[right]] = right;
49+
}
50+
return false;
51+
}
52+
};
53+
54+
int main()
55+
{
56+
Solution s;
57+
vector<int> nums = {0,1,2,3,4,5,3};
58+
//cout<<s.containsDuplicate(nums);
59+
cout<<s.containsNearbyDuplicate(nums, 2);
60+
return 0;
61+
}

0 commit comments

Comments
 (0)