Idea設定編輯區字型快捷鍵
阿新 • • 發佈:2022-03-15
package leetcode; import java.util.Comparator; import java.util.PriorityQueue; public class offer_41 { private PriorityQueue<Integer> big; private PriorityQueue<Integer> small; public offer_41(){ //建立一個大頂堆,用於儲存排序陣列左邊部分 big=new PriorityQueue<Integer>(newComparator<Integer>() { public int compare(Integer a,Integer b) { return b-a; } }); //建立一個小頂堆,用於儲存排序陣列右邊部分 small=new PriorityQueue<Integer>(); } public void addNum(int num) { //每次加入陣列先加入大頂堆,然後將大頂堆中的最大值放入小頂堆,判斷小頂堆中元素個數是否大於大頂堆中的元素個數,調整小頂堆元素進入大頂堆big.offer(num); small.offer(big.poll()); if((small.size()-big.size())>1) { big.offer(small.poll()); } } public double findMedian() { //如果兩個堆元素個數相等,則中位數是兩個堆的根節點的平均值 if(big.size()==small.size()) { return ((double)big.peek()+(double)small.peek())/2; } else { //否則是小頂堆的根節點值 return (double)small.peek(); } } }