File tree Expand file tree Collapse file tree 1 file changed +8
-20
lines changed
Expand file tree Collapse file tree 1 file changed +8
-20
lines changed Original file line number Diff line number Diff line change 11class MedianFinder {
2- PriorityQueue <Integer > p1 , p2 ;
2+ Queue <Integer > lower , upper ;
33
4- /** initialize your data structure here. */
54 public MedianFinder () {
6- p1 = new PriorityQueue <>(Collections .reverseOrder ());
7- p2 = new PriorityQueue <>();
5+ lower = new PriorityQueue <>(Collections .reverseOrder ());
6+ upper = new PriorityQueue <>();
87 }
98
109 public void addNum (int num ) {
11- if (p1 .isEmpty () || p1 .peek () > num ) {
12- p1 .offer (num );
13- } else {
14- p2 .offer (num );
15- }
10+ upper .offer (num );
11+ lower .offer (upper .poll ());
1612
17- if (p1 .size () > p2 .size () + 1 ) {
18- p2 .offer (p1 .poll ());
19- } else if (p2 .size () > p1 .size () + 1 ) {
20- p1 .offer (p2 .poll ());
13+ if (lower .size () > upper .size ()) {
14+ upper .offer (lower .poll ());
2115 }
2216 }
2317
2418 public double findMedian () {
25- if (p1 .size () == p2 .size ()) {
26- return (double ) (p1 .peek () + p2 .peek ()) / 2.0 ;
27- } else if (p1 .size () > p2 .size ()) {
28- return (double ) p1 .peek ();
29- } else {
30- return (double ) p2 .peek ();
31- }
19+ return lower .size () == upper .size () ? ((double ) lower .peek () + upper .peek ()) / 2.0 : (double ) upper .peek ();
3220 }
3321}
You can’t perform that action at this time.
0 commit comments