Sword se refiere a Offer-60-la mediana en el flujo de datos

Descripción del Título

¿Cómo obtener la mediana en un flujo de datos? Si se lee un número impar de valores del flujo de datos, la mediana es el valor en el medio después de que se ordenan todos los valores. Si lee un número par de valores del flujo de datos, entonces la mediana es el promedio de los dos números del medio después de ordenar todos los números. Usamos el método Insert () para leer el flujo de datos y usamos el método GetMedian () para obtener la mediana de los datos leídos actualmente.

Ideas para resolver problemas

De hecho, resolver este problema no es problemático. Pero la optimización es problemática. Pensé en una solución. La optimización solo puede depender del jefe

Código

import java.util.ArrayList;
import java.util.Collections;
public class Solution {
    
    
 
    ArrayList<Integer> list = new ArrayList<Integer>();
    public void Insert(Integer num) {
    
    
        list.add(num);
    }

    public Double GetMedian() {
    
    
        Collections.sort(list);
        int size = list.size();
        if(size%2==0){
    
    
            //如果是偶数个
            return new Double(list.get(size/2-1)+list.get(size/2))/2;
        }else{
    
    
            return new Double(list.get((size+1)/2 - 1));
        }
    }


}

Supongo que te gusta

Origin blog.csdn.net/H1517043456/article/details/107594216
Recomendado
Clasificación