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