-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSolution.java
More file actions
52 lines (44 loc) · 1.19 KB
/
Solution.java
File metadata and controls
52 lines (44 loc) · 1.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
class MedianFinder {
PriorityQueue<Integer> maxQ;
PriorityQueue<Integer> minQ;
public MedianFinder() {
maxQ = new PriorityQueue<Integer>((a,b)->b-a);
minQ = new PriorityQueue<Integer>();
}
public void addNum(int num) {
int s1=maxQ.size();
int s2 = minQ.size();
if(s1==s2){
if(minQ.isEmpty()){
maxQ.add(num);
}else{
if(num<=minQ.peek()){
maxQ.add(num);
}else{
maxQ.add(minQ.poll());
minQ.add(num);
}
}
}else{
if(num>=maxQ.peek()){
minQ.add(num);
}else{
minQ.add(maxQ.poll());
maxQ.add(num);
}
}
}
public double findMedian() {
if(maxQ.size()==minQ.size()){
return (maxQ.peek()+minQ.peek())/2.0;
}else{
return maxQ.peek();
}
}
}
/**
* Your MedianFinder object will be instantiated and called as such:
* MedianFinder obj = new MedianFinder();
* obj.addNum(num);
* double param_2 = obj.findMedian();
*/