题解 | #多数组中位数#
多数组中位数
https://www.nowcoder.com/practice/b6bb0bce88894108bfc23e9b7b012420
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param arr1 int整型一维数组 * @param arr2 int整型一维数组 * @return int整型 */ public int getUpMedian (int[] arr1, int[] arr2) { // write code here PriorityQueue<Integer> que1=new PriorityQueue<>((a,b)->a-b);//从小到大 上边的堆 PriorityQueue<Integer> que2=new PriorityQueue<>((a,b)->b-a);//从大到小,下边的堆,其中队列头为答案 //效果类似为 100 99 98 || 97 96 95 97为答案 for(int i=0;i<arr1.length;i++) { if(que2.isEmpty()||arr1[i]<que2.peek()) { que2.add(arr1[i]); if(que2.size()>que1.size()+1) { que1.add(que2.poll()); } } else { que1.add(arr1[i]); if(que1.size()>que2.size()) { que2.add(que1.poll()); } } } for(int i=0;i<arr2.length;i++) { if(que2.isEmpty()||arr2[i]<que2.peek()) { que2.add(arr2[i]); if(que2.size()>que1.size()+1) { que1.add(que2.poll()); } } else { que1.add(arr2[i]); if(que1.size()>que2.size()) { que2.add(que1.poll()); } } } // System.out.println(que2.size()); return que2.peek(); } }