Descripción de la pregunta
Dada una matriz ordenada, elimine los elementos duplicados de la matriz, retenga solo un elemento duplicado y devuelva la nueva longitud de la matriz.
Requerir:
No asigne espacio adicional a la matriz, debe usar el tamaño de memoria de la constante para operar en su lugar.
Por ejemplo:
Dada la matriz a = [1,1,2], su llamada de función debe retroceder la longitud = 2, y A ahora se convierte en [1,2].
ingresar
Una matriz ordenada, por ejemplo [1,1,2].
Producción
Devuelve la nueva longitud de la matriz, por ejemplo, longitud = 2.
Método de puntero rápido y lento
Establezca el puntero rápido para atravesar la matriz y el puntero lento al siguiente bit del elemento no repetido.
Public static int eliminarUpplicates (int [] nums) {if (nums.length <1) return nums.length; int lento = 1; for (int fast = 1; fast <nums.length; fast ++) {if (nums [fast]! = nums [lento - 1]) {nums [lento ++] = nums [fast]; }} return lento;}Demostración de animación:
Extendido
Elimina elementos duplicados de la matriz ordenada, dejando el número especificado de dígitos.
public static int eliminedUpplateSn (int [] nums, int repetn) {if (nums.length <= repitn) return nums.length; int index = repite; for (int i = repitn; i <nums.length; i ++) {if (nums [i]! = nums [index - repetn]) {nums [index ++] = nums [i]; }} índice de retorno;}Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.