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