File tree 1 file changed +15
-14
lines changed
scripts/algorithms/F/Find Median from Data Stream
1 file changed +15
-14
lines changed Original file line number Diff line number Diff line change
1
+ // Runtime: 183 ms (Top 63.97%) | Memory: 124.7 MB (Top 57.27%)
1
2
class MedianFinder {
2
-
3
+
3
4
PriorityQueue maxHeap ;
4
5
PriorityQueue minHeap ;
5
-
6
+
6
7
public MedianFinder () {
7
8
maxHeap = new PriorityQueue <Integer >((a ,b )->b -a );
8
9
minHeap = new PriorityQueue <Integer >();
9
10
}
10
-
11
+
11
12
public void addNum (int num ) {
12
-
13
+
13
14
//Pushing
14
15
if ( maxHeap .isEmpty () || ((int )maxHeap .peek () > num ) ){
15
16
maxHeap .offer (num );
16
17
}
17
18
else {
18
19
minHeap .offer (num );
19
20
}
20
-
21
- //Balancing
21
+
22
+ //Balancing
22
23
if ( maxHeap .size () > minHeap .size ()+ 1 ){
23
24
minHeap .offer (maxHeap .peek ());
24
25
maxHeap .poll ();
@@ -27,22 +28,22 @@ else if (minHeap.size() > maxHeap.size()+ 1 ){
27
28
maxHeap .offer (minHeap .peek ());
28
29
minHeap .poll ();
29
30
}
30
-
31
+
31
32
}
32
-
33
+
33
34
public double findMedian () {
34
-
35
- //Evaluating Median
36
- if ( maxHeap .size () == minHeap .size () ){ // Even Number
35
+
36
+ //Evaluating Median
37
+ if ( maxHeap .size () == minHeap .size () ){ // Even Number
37
38
return ((int )maxHeap .peek ()+ (int )minHeap .peek ())/2.0 ;
38
39
}
39
- else { //Odd Number
40
+ else { //Odd Number
40
41
if ( maxHeap .size () > minHeap .size ()){
41
42
return (int )maxHeap .peek ()+ 0.0 ;
42
43
}
43
- else { // minHeap.size() > maxHeap.size()
44
+ else { // minHeap.size() > maxHeap.size()
44
45
return (int )minHeap .peek ()+ 0.0 ;
45
46
}
46
47
}
47
48
}
48
- }
49
+ }
You can’t perform that action at this time.
0 commit comments