File tree Expand file tree Collapse file tree 1 file changed +55
-0
lines changed
2018-feb/adhoc-thinking/src/com/alg/top20/adhoc Expand file tree Collapse file tree 1 file changed +55
-0
lines changed Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments