FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

week3 homework · feixiangcode/algorithm@fdcd346 · GitHub

Commit fdcd346

Browse files
authored
week3 homework
1 parent c557977 commit fdcd346

1 file changed

Lines changed: 62 additions & 0 deletions

File tree

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
//https://leetcode.com/problems/find-median-from-data-stream/
2+
public class MedianFinder {
3+
4+
private Queue<Integer> maxHeap;
5+
private Queue<Integer> minHeap;
6+
7+
8+
public MedianFinder() {
9+
maxHeap = new PriorityQueue<Integer>(11,Collections.reverseOrder());
10+
minHeap = new PriorityQueue<Integer>();
11+
}
12+
13+
14+
public void addNum(int num) {
15+
if(maxHeap.size()==0 || maxHeap.peek()>=num) {
16+
maxHeap.offer(num);
17+
if(maxHeap.size()-1 > minHeap.size()) {
18+
minHeap.offer(maxHeap.poll());
19+
}
20+
}
21+
else if(minHeap.size()==0 || minHeap.peek() < num) {
22+
minHeap.offer(num);
23+
if(minHeap.size() > maxHeap.size()) {
24+
maxHeap.offer(minHeap.poll());
25+
}
26+
}
27+
else {
28+
if(maxHeap.size() <= minHeap.size()) {
29+
maxHeap.offer(num);
30+
}
31+
else {
32+
minHeap.offer(num);
33+
}
34+
}
35+
36+
37+
}
38+
39+
40+
41+
public double findMedian() {
42+
if(maxHeap.size() == minHeap.size()) {
43+
return (double)(maxHeap.peek() + minHeap.peek()) / 2.0;
44+
}
45+
else {
46+
return (double)maxHeap.peek();
47+
}
48+
}
49+
50+
51+
public static void main(String[] args) {
52+
MedianFinder m = new MedianFinder();
53+
m.addNum(1);
54+
System.out.println(m.findMedian());
55+
}
56+
57+
}
58+
59+
// Your MedianFinder object will be instantiated and called as such:
60+
// MedianFinder mf = new MedianFinder();
61+
// mf.addNum(1);
62+
// mf.findMedian();

0 commit comments

Comments
 (0)

Back | FazBrowse Home | New Git URL