números de serie duplicados preguntas cara 03. Leetcode

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: la ( norte ) O (N)
  • Espacio de la complejidad: la ( norte ) O (N)

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: la ( norte ) O (N)
  • Espacio de la complejidad: la ( norte ) O (N)

método Exchange (java)

Idea: aprovechar la condición de título, longitud digitales norte norte valores, que son a 0ºC y la norte - 1 n-1 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 la ( norte ) O (N) 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: la ( norte ) O (N)
  • Espacio de la complejidad: la ( 1 ) O (1)
Publicado 43 artículos originales · alabanza ganado 20 · vistas 1447

Supongo que te gusta

Origin blog.csdn.net/Chen_2018k/article/details/104889883
Recomendado
Clasificación