劍指offer計劃17( 排序中等)---java
阿新 • • 發佈:2021-09-17
1.1、題目1
劍指 Offer 40. 最小的k個數
1.2、解法
陣列排序,然後迴圈賦值,這是基礎題。
1.3、程式碼
class Solution {
public int[] getLeastNumbers(int[] arr, int k) {
int []res = new int[k];
Arrays.sort(arr);
for(int i=0;i<k;i++){
res[i]=arr[i];
}
return res;
}
}
2.1、題目2
劍指 Offer 41. 資料流中的中位數
2.2、解法
這題不會做,有空再看看。
2.3、程式碼
class MedianFinder { Queue<Integer> A, B; public MedianFinder() { A = new PriorityQueue<>(); // 小頂堆,儲存較大的一半 B = new PriorityQueue<>((x, y) -> (y - x)); // 大頂堆,儲存較小的一半 } public void addNum(int num) { if(A.size() != B.size()) { A.add(num); B.add(A.poll()); } else { B.add(num); A.add(B.poll()); } } public double findMedian() { return A.size() != B.size() ? A.peek() : (A.peek() + B.peek()) / 2.0; } }