Find Duplicate in Array
Techniques
Technique
Time Complexity
Sapce Complexity
Brute Force
Sorting
β
or β
Set/Map
β
Brute Force
int Solution::repeatedNumber(const vector<int> &A) {
for(int i = 0; i < A.size(); i++)
for(int j = i + 1; j < A.size(); j++)
if(A[i] == A[j])
return A[i];
return -1;
}
Time Limit Exceed
Time Complexity: β
Space Complexity: β
Using Sorting
int Solution::repeatedNumber(const vector<int> &A) {
vector<int> copy(A.begin(), A.end());
sort(copy.begin(), copy.end());
int prev = copy[0];
for(int i = 1; i < copy.size(); i++)
if(copy[i] == prev)
return copy[i];
else
prev = copy[i];
return prev;
}
Accepted
Time Complexity: β
Space Complexity: β for duplicating const
array.
Using Set
int Solution::repeatedNumber(const vector<int> &A) {
set<int> s;
for(const int &x: A)
if(s.count(x))
return x;
else
s.insert(x);
return -1;
}
Memory Limit Exceed
Time Complexity: β
Space Complexity: β
Tortoise Hare
int Solution::repeatedNumber(const vector<int> &A) {
int slow = A[0];
int fast = A[0];
do {
slow = A[slow];
fast = A[A[fast]];
} while(slow != fast);
slow = A[0];
while(slow != fast) {
slow = A[slow];
fast = A[fast];
}
return slow;
}
Time Complexity: β
Space Complexity: β
Last updated