Skip to content

Commit c4c63f5

Browse files
authored
Merge pull request #1289 from ShrujanKotturi/main
File(s) Modified: 973-K-Closest-Points-to-Origin.cs
2 parents 677d705 + 54b2ec2 commit c4c63f5

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
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+
}

0 commit comments

Comments
 (0)