[Una pregunta por día] Eliminar elementos duplicados en una matriz ordenada

https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/

Dada una matriz ordenada, debe eliminar los elementos repetidos en su lugar, de modo que cada elemento aparezca solo una vez y devolver la nueva longitud de la matriz después de la eliminación.

No use espacio de matriz adicional, debe modificar la matriz de entrada en su lugar y hacerlo con O (1) espacio adicional.

Ejemplo 1:

Números de matriz dados = [1,1,2],

La función debería devolver una nueva longitud de 2, y los dos primeros elementos de los números de matriz originales se modifican a 1, 2.

No necesita considerar los elementos en la matriz más allá de la nueva longitud.
Ejemplo 2

Números dados = [0,0,1,1,1,2,2,3,3,4],

La función debe devolver una nueva longitud de 5, y los primeros cinco elementos de los números de matriz originales se modifican a 0, 1, 2, 3, 4.

No necesita considerar los elementos en la matriz más allá de la nueva longitud.


Solución 1

Ley de violencia, la complejidad del tiempo es mayor!

Solución 2

Método transversal de doble puntero 16ms, 7.5mb

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        if (nums.size() < 2) {
            return nums.size();
        }

        size_t slow = 0, fast = 1;
        while (fast < nums.size()) {
            if (nums[fast] != nums[slow]) {
                nums[++slow] = nums[fast];
            }
            fast++;
        }
        return ++slow;
    }
};

EOF

Se han publicado 98 artículos originales · 91 alabanzas · Más de 40,000 visitas

Supongo que te gusta

Origin blog.csdn.net/Hanoi_ahoj/article/details/105336477
Recomendado
Clasificación