Directorio artículo
título Descripción
Encontrar un número de serie duplicados.
Todos los números en una matriz de nums longitud n de están en el rango de 0 ~ n-1. Algunos de matriz digital se duplica, pero no sabe cuántos números repetir, no sé cada número se repitió varias veces. Por favor, encontrar una gran variedad de cualquiera de los números duplicados.
Ejemplo:
Entrada:
[2, 3, 1, 0, 2, 5, 3]
de salida: 2 o 3
Descripción:
2 <= n <= 100 000
solución del problema
tabla hash (Java)
Ideas: la tabla hash es relativamente simple bajo la etiqueta de una pregunta. Ahorra hasta directamente con la tabla de hash HashMap estructura de resolver, de hecho, no es necesario, sino también un desperdicio de espacio.
class Solution {
public int findRepeatNumber(int[] nums) {
HashMap<Integer,Integer> map = new HashMap<>();
for (int num: nums) {
if(map.containsKey(num)) return num;
map.put(num,2);
}
return -1;
}
}
Análisis de la complejidad
- Complejidad de tiempo:
- Espacio de la complejidad:
Hash Tabla 2 (Java)
Ideas: El conjunto de la estructura puede ser un poco más claro, agregado con éxito la vista al siguiente elemento, no se devuelve el elemento actual.
class Solution {
public int findRepeatNumber(int[] nums) {
Set<Integer> set = new HashSet<Integer>();
int repeat = -1;
for (int num : nums) {
if (!set.add(num)) {
repeat = num;
break;
}
}
return repeat;
}
}
- Complejidad de tiempo:
- Espacio de la complejidad:
método Exchange (java)
Idea: aprovechar la condición de título, longitud digitales valores, que son a 0ºC y la rango, de hecho, puede ser entendida como, si no se repite, a continuación, para cada valor, es una zanahoria un pozo. A continuación, puede convertir la vivienda de cada elemento de la matriz, si el proceso se repite homing encuentros, el número de devoluciones. A pesar de que es complejidad del tiempo, pero se ejecuta mucho más rápido que los dos métodos anteriores.
class Solution {
public int findRepeatNumber(int[] nums) {
int temp;
for(int i=0;i<nums.length;i++){
while (nums[i]!=i){
if(nums[i]==nums[nums[i]]){
return nums[i];
}
temp=nums[i];
nums[i]=nums[temp];
nums[temp]=temp;
}
}
return -1;
}
}
- Complejidad de tiempo:
- Espacio de la complejidad: