Leetcode leetcode1636. Ordena la matriz en orden ascendente según la frecuencia

Tema de participación de la Fase 2 del Desafío de temas de CSDN
: Solución de algoritmos

inserte la descripción de la imagen aquí

Enlace del tema y descripción.

https://leetcode.cn/problems/sort-array-by-increasing-frequency/
Le proporcionamos números de matriz enteros, ordene la matriz en orden ascendente según la frecuencia de cada valor. Si hay varios valores con la misma frecuencia, ordénelos en orden descendente según el valor en sí.

Devuelva la matriz ordenada.

Ejemplo 1:

Entrada: nums = [1,1,2,2,2,3]
Salida: [3,1,1,2,2,2]
Explicación: '3' tiene frecuencia 1, '1' tiene frecuencia 2, '2 'La frecuencia es 3.
Ejemplo 2:

Entrada: nums = [2,3,1,3,2]
Salida: [1,3,3,2,2]
Explicación: Las frecuencias de '2' y '3' son 2, por lo que están en orden descendente según el valor mismo Ordenar.
Ejemplo 3:

Entrada: números = [-1,1,-6,4,5,-6,1,4,1]
Salida: [5,-1,4,4,-6,-6,1,1,1]

pista:

1 <= números.longitud <= 100
-100 <= números[i] <= 100

Palabras clave: frecuencia de clasificación

método uno:

ejecutar captura de pantalla

inserte la descripción de la imagen aquí

el código


    public int[] frequencySort(int[] nums) {
    
    
        // 首先计算频率
        Map<Integer, Integer> hash = new HashMap<>(nums.length);
        ArrayList<Integer> list = new ArrayList<>(nums.length);
        for (int num : nums) {
    
    
            hash.put(num, hash.getOrDefault(num, 0) + 1);
            list.add(num);
        }
        // 因为这里直接int[] 数组排序 编译不通过,所以浪费了空间转储
        // 然后排序
        list.sort((o1, o2) -> {
    
    
        	// 取出频率作为排序
            Integer fr1 = hash.get(o1);
            Integer fr2 = hash.get(o2);
            // 如果频率相等则数值逆序( - ) 
            return fr1.equals(fr2) ? -Integer.compare(o1, o2) : Integer.compare(fr1, fr2);
        });
		// 转 int 数组
        return list.stream().mapToInt(Integer::intValue).toArray();
    }

fin

Bienvenido a comunicarse en el área de comentarios, registrarse todos los días y ¡apresúrate! ! !

Supongo que te gusta

Origin blog.csdn.net/qq_35530042/article/details/126931686
Recomendado
Clasificación