File tree Expand file tree Collapse file tree 1 file changed +44
-0
lines changed Expand file tree Collapse file tree 1 file changed +44
-0
lines changed Original file line number Diff line number Diff line change 1+ public  class  Solution  { 
2+     // Closest to origin minHeap 
3+     private  PriorityQueue < int [ ] ,  double >  pq ; 
4+     private  int  size ; 
5+     // T: O(Max(M, KLogM)), S: O(k) 
6+     public  int [ ] [ ]  KClosest ( int [ ] [ ]  points ,  int  k )  { 
7+         pq  =  new  PriorityQueue < int [ ] ,  double > ( ) ; 
8+         size  =  k ; 
9+         
10+         AddToPriorityQueue ( points ) ; 
11+         
12+         return  Closest ( ) ; 
13+     } 
14+     
15+     public  class  MaxHeap  :  IComparer < double > { 
16+         public  int  Compare ( double  x ,  double  y ) { 
17+             if (  x <  y )  return  1 ; å 
18+             else if  ( x  >  y )  return  - 1 ; 
19+             else  return  0 ; 
20+         } 
21+     } 
22+     
23+     // T: O(M) 
24+     private  void  AddToPriorityQueue ( int [ ] [ ]  points ) { 
25+         foreach ( var  point  in  points ) { 
26+             //var value = (double) Math.Sqrt(point[0]*point[0] + point[1]*point[1]); 
27+             var  value  =  ( double )  point [ 0 ] * point [ 0 ]  +  point [ 1 ] * point [ 1 ] ; 
28+             pq . Enqueue ( point ,  value ) ; 
29+         
30+            
31+         } 
32+     } 
33+     
34+     // T: O(KLogM) 
35+     private  int [ ] [ ]  Closest ( ) { 
36+         var  result  =  new  List < int [ ] > ( ) ; 
37+         while ( size  >  0 ) { 
38+             result . Add ( pq . Dequeue ( ) ) ; 
39+             size -- ; 
40+         } 
41+         
42+         return  result . ToArray ( ) ; 
43+     } 
44+ } 
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments