Skip to content

Commit 31db170

Browse files
authored
Update Find Median From Data Stream.java
1 parent 73a4840 commit 31db170

File tree

1 file changed

+12
-15
lines changed

1 file changed

+12
-15
lines changed

Hard/Find Median From Data Stream.java

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,26 @@
11
class MedianFinder {
22

3-
/** initialize your data structure here. */
4-
PriorityQueue<Integer> smaller;
5-
PriorityQueue<Integer> bigger;
3+
private PriorityQueue<Integer> small;
4+
private PriorityQueue<Integer> large;
5+
66
public MedianFinder() {
7-
smaller = new PriorityQueue<>((a, b) -> b - a);
8-
bigger = new PriorityQueue<>();
7+
this.small = new PriorityQueue<>((a, b) -> b - a);
8+
this.large = new PriorityQueue<>();
99
}
1010

1111
public void addNum(int num) {
12-
smaller.add(num);
13-
bigger.add(smaller.poll());
14-
if (smaller.size() < bigger.size()) {
15-
smaller.add(bigger.poll());
12+
small.add(num);
13+
large.add(small.remove());
14+
if (large.size() > small.size()) {
15+
small.add(large.remove());
1616
}
1717
}
1818

1919
public double findMedian() {
20-
if (smaller.size() == 0 && bigger.size() == 0) {
21-
return 0.0;
20+
if (small.size() > large.size()) {
21+
return small.peek();
2222
}
23-
if (smaller.size() > bigger.size()) {
24-
return (double) smaller.peek();
25-
}
26-
return ((double) smaller.peek() + bigger.peek()) / 2;
23+
return (small.peek() + large.peek()) / 2.0;
2724
}
2825
}
2926

0 commit comments

Comments
 (0)