Google算法题:寻找中位数

xiaoxiao2021-02-28  113

题目

题目来源:Link

代码

1、方法一

package com.graph; import java.util.*; public class Solution{ PriorityQueue<Integer> minHeap = new PriorityQueue<Integer>(Collections.reverseOrder()); PriorityQueue<Integer> maxHeap = new PriorityQueue<Integer>(); public void addNum(int num) { minHeap.add(num); maxHeap.add(minHeap.poll());//让数不管怎样加到了maxheap中 if(minHeap.size()<maxHeap.size()) {//maxHeap可能大1,反正拿一个给minHeap就平衡了 minHeap.add(maxHeap.poll()); } } public double findMedian() { if(minHeap.size()==maxHeap.size()) { return (minHeap.peek()+maxHeap.peek())/2.0; }else { return minHeap.peek(); } } }

2、方法二

public class Solution{ List<Integer> list = new ArrayList<Integer>(); //log public void addNum(int num){ list.add(num); Collections.sort(list); } public int findMedian(){ int size = list.size(); if(size==0) return null; if(size%2!=0){ return list.get(size/2); }else{ return (list.get(size/2)+list.get(size/2-1))/2; } } }
转载请注明原文地址: https://www.6miu.com/read-53855.html

最新回复(0)