1. 程式人生 > 其它 >劍指offer計劃17( 排序中等)---java

劍指offer計劃17( 排序中等)---java

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;
    }
}