Dada una matriz ordenada, elimine los duplicados en su lugar de modo que cada elemento aparezca solo una vez y devuelva la nueva longitud. No asigne espacio adicional para otra matriz, debe hacerlo en su lugar con memoria constante.
Por ejemplo, dada la matriz de entrada A = [1,1,2], su función debería devolver length = 2, y A ahora es [1,2].
Análisis
El problema es bastante sencillo. Devuelve la longitud de la matriz con elementos únicos, pero la matriz original también debe cambiarse. Este problema es similar a Eliminar duplicados de Sorted Array II.
Solución Java
public static int removeDuplicates(int[] A) { if (A.length < 2) return A.length; int j = 0; int i = 1; while (i < A.length) { if (A[i] != A[j]) { j++; A[j] = A[i]; } i++; } return j + 1; } |
Tenga en cuenta que solo nos preocupa la primera parte única de la matriz original. Entonces está bien si la matriz de entrada es {1, 2, 2, 3, 3}, la matriz se cambia a {1, 2, 3, 3, 3}.