(Java) leetcode-347 Top K Elementos frecuentes

título Descripción

[] Elementos en la k-ésima frecuencia
dada una matriz no vacío de números enteros, donde aparecen los elementos de retorno de alta frecuencia k delanteras.

Ejemplo 1:

De entrada: nums = [1,1,1,2,2,3], k = 2
de salida: [1,2]
Ejemplo 2:

De entrada: nums = [1], k = 1
de la salida: [1]
Descripción:

Siempre se puede asumir una k racional dado, y 1 ≤ k ≤ número de diferentes elementos de la matriz.
Su complejidad temporal del algoritmo debe ser mejor que O (n log n), n es el tamaño de la matriz.

pensamiento

Correspondiente a la frecuencia del mapa digital que aparezca en la memoria, la complejidad de tiempo de O (n)
utilizando la frecuencia de pedido cubo tipo (para crear una matriz, la matriz como un patrón de frecuencia, para diferentes frecuencias establecidas aparece numéricos, en el correspondiente subíndice de matriz), el número de cubetas es n + 1, por lo que la complejidad de tiempo cubo especie es O (n)
Por lo tanto, la complejidad de tiempo total es O (n)
Aquí Insertar imagen Descripción

código

class Solution {
	public List<Integer> topKFrequent(int[] nums, int k) {

		List<Integer>[] bucket = new List[nums.length + 1];
		Map<Integer, Integer> frequencyMap = new HashMap<Integer, Integer>();
		// 把数字与对应出现的频率存到map中
		for (int n : nums) {
			frequencyMap.put(n, frequencyMap.getOrDefault(n, 0) + 1);
		}

		// 桶排序
        // 将频率作为数组下标,对于出现频率不同的数字集合,存入对应的数组下标
		for (int key : frequencyMap.keySet()) {
			int frequency = frequencyMap.get(key);
			if (bucket[frequency] == null) {
				bucket[frequency] = new ArrayList<>();
			}
			bucket[frequency].add(key);
		}

		List<Integer> res = new ArrayList<>();
		// 倒序遍历数组获取出现顺序从大到小的排列
		for (int pos = bucket.length - 1; pos >= 0 && res.size() < k; pos--) {
			if (bucket[pos] != null) {
				res.addAll(bucket[pos]);
			}
		}
		return res;
	}
}

Presentar los resultados

Aquí Insertar imagen Descripción

Publicados 143 artículos originales · ganado elogios 45 · Vistas a 70000 +

Supongo que te gusta

Origin blog.csdn.net/z714405489/article/details/103163272
Recomendado
Clasificación