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