¿Encontrar un elemento duplicado en una matriz?

Vi una pregunta de entrevista de la siguiente manera:

Un número en la matriz se está duplicando.

La solución simple es la siguiente:

for(int i=0;i<n;i++){
{  
    dup = false;
    for(j=0;j<n;j++){
        if(i!=j && a[i]= a[j]){
            dup = true;
        }

       if(dup == true)
          return a[i]
     }
}

Pero quiero implementarlo en O (n log (n)) y en O (n) tiempo. ¿Cómo puedo hacerlo?

Respuesta 1

Ordene la matriz (que se puede hacer en la primera O (n Log n), luego la comparación solo se debe hacer para los elementos adyacentes. O simplemente coloque la matriz en una tabla hash y deténgase si encuentra la primera clave con un exsting entrada.

Respuesta: 2

Estoy respondiendo a "¿Encontrar un elemento duplicado en una matriz?"

Busca i y j de 0 a <n, y luego comprueba j! = I. En cambio, podría formar sus bucles de esta manera:

for (int i=0; i<n-1; i++) 
{
    for (j=i+1; j<n; j++)
    {
         if (a[i] == a[j])
         {
            return i;
         }
    }
}
return -1; 

Establecer repetidamente dup = false no tiene sentido. O dup sigue siendo falso, o era cierto, entonces dejaste el código con 'return'.

Respuesta: 3

Escribir las respuestas anteriores en código real (Java):

O (n log n) tiempo:

    Arrays.sort(arr);
    for (int i = 1; i < arr.length; i++)
        if (arr[i] == arr[i - 1])
            return arr[i];
    throw new Exception(); // error: no duplicate

A tiempo:

    Set<Integer> set = new HashSet<Integer>();
    for (int i = 0; i < arr.length; i++) {
        if (set.contains(arr[i]))
            return arr[i];
        set.add(arr[i]);
    }
    throw new Exception(); // error: no duplicate
Respuesta: 4

La referencia java.util.TreeSetque se implementa en el árbol rojo-negro subyacente es O (n * log (n)) .

Respuesta: 5

Yo recomiendo usar el hash mapa (suponiendo que no haya colisiones) para resolverlo.

 private boolean hasDuplicate(int[] arr) {
        Map<Integer, Boolean> map = new HashMap();
        // find the duplicate element from an array using map
        for (int i = 0; i < arr.length; i++) {
            if(map.containsKey(arr[i])) {
                return true;
            } else {
                map.put(arr[i], true);
            }
        }
        return false;
    }

Complejidad del tiempo: O (n)

Complejidad espacial: O (n)

Otro enfoque es ordenar y comparar, pero la clasificación agrega una sobrecarga adicional .

Respuesta: 6

Al usar colecciones, podemos buscar el siguiente fragmento de código:

Set<String> set = new HashSet<String>();
    for (String arrayElement : arr) {
        if (!set.add(arrayElement)) {
            System.out.println("Duplicate Element is : " + arrayElement);
        }
    }
Respuesta: 7

Encuentre la solución de complejidad O (n) de la siguiente manera:

int ar[]={0,1,2,3,0,2,3,1,0,2};
    Set  <Integer>mySet=new HashSet<>();
    for(int n:ar){
        if(!mySet.add(n)){
            System.out.println(" "+n);
        }
    }

Y otro proceso con menor complejidad espacial O (N) y posiblemente O (n Log n) -

    public void duplicateElementSolution(int ar[]){
     Arrays.sort(ar);

    for(int i=0;i<(ar.length-1);i++){
        if(ar[i]==ar[i+1]){
            System.out.println(" "+ar[i]);
        }
    }
  }
Respuesta: 8

Estoy tratando de obtener una vista de edición de texto que solo permita letras (mayúsculas y minúsculas). Funciona con este código: edittv.setKeyListener (DigitsKeyListener.getInstance ("...

Después de ejecutar el caso de prueba Java (prueba TestNG, si es importante) en IDEA, se creará un archivo llamado .attach_pid <xxx> (por ejemplo, .attach_pid16153), debajo de la raíz del proyecto. Todavía están allí incluso después de la prueba ...

Estoy tratando de generar dinámicamente un esquema XML usando Xerces-J y obteniendo el siguiente error, agradezco cualquier ayuda al respecto. DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance (); ...

Para este problema, debo escribir un método llamado modo que devuelve el elemento más frecuente de una matriz de enteros. Suponga que la matriz tiene al menos un elemento y que cada elemento ...