Skip to content

Commit 03703d2

Browse files
authored
Create TwoSum.cpp
Cpp implementation of two sum
1 parent 6caf011 commit 03703d2

File tree

1 file changed

+55
-0
lines changed
  • 2018-feb/adhoc-thinking/src/com/alg/top20/adhoc

1 file changed

+55
-0
lines changed
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
#include <iostream>
2+
#include <algorithm>
3+
#include <set>
4+
using namespace std;
5+
6+
// sort and check adjacent element
7+
int findDuplicate1(int arr[],int n){
8+
sort(arr,arr+n);
9+
for(int i=1;i<n;++i){
10+
if(arr[i]==arr[i-1]){
11+
return arr[i];
12+
}
13+
}
14+
return -1;
15+
}
16+
17+
//in place check
18+
int findDuplicate2(int arr[],int n){
19+
20+
for(int i=0;i<n;i++){
21+
if(arr[abs(arr[i])] < 0)
22+
return abs(arr[i]);
23+
else
24+
arr[abs(arr[i])]*=-1;
25+
}
26+
return 0;
27+
}
28+
//using set data structure
29+
int findDuplicate3(int arr[],int n){
30+
set<int> st;
31+
st.insert(arr[0]);
32+
for(int i=1;i<n;i++){
33+
if(st.find(arr[i])!=st.end())
34+
return arr[i];
35+
st.insert(arr[i]);
36+
}
37+
}
38+
39+
int main(){
40+
int n;
41+
cin>>n;
42+
int arr[n];
43+
int i;
44+
45+
// generating a test case
46+
for(i=0;i<n-1;i++){
47+
arr[i]=n-i-1;
48+
}
49+
arr[i]=n-1; //making last element duplicate
50+
51+
cout<<findDuplicate1(arr,n);
52+
cout<<findDuplicate2(arr,n);
53+
cout<<findDuplicate3(arr,n);
54+
55+
}

0 commit comments

Comments
 (0)