Pregunta diaria de LeetCode 448. Encuentra todos los números que faltan en la matriz

448. Encuentra todos los números que faltan en la matriz.

Dada una 1 ≤ a[i] ≤ nmatriz de enteros con un rango de (n = tamaño de matriz), algunos elementos de la matriz aparecen dos veces y algunos solo aparecen una vez.

Buscar todo en [1, n]el rango no aparece en la matriz de números.

¿Puede realizar esta tarea sin utilizar espacio adicional y la complejidad de tiempo es O (n)? Puede asumir que la matriz devuelta no está incluida en el espacio adicional.

Ejemplo:

输入:
[4,3,2,7,8,2,3,1]

输出:
[5,6]

Método 1: modificar in situ

Ideas para resolver problemas

Pensé que era un problema simple y que podía atacar con fuerza. Después de pensarlo durante mucho tiempo, no lo he descubierto. Después de leer la respuesta oficial, me di cuenta de que la modificación in situ no se considera un espacio extra ~

Código de referencia

public List<Integer> findDisappearedNumbers(int[] nums) {
    
    
    List<Integer> ans = new ArrayList<>();
    int n = nums.length;
    for (int num : nums) {
    
    
        int x = (num - 1) % n;
        nums[x] += n;
    }
    for (int i = 0; i < n; i++) {
    
    
        if (nums[i] <= n) {
    
    
            ans.add(i + 1);
        }
    }
    return ans;
}

Resultados de la
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_27007509/article/details/113803855
Recomendado
Clasificación