[Uma pergunta por dia] Excluir itens duplicados na matriz classificada

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

Dada uma matriz classificada, você precisa excluir os elementos repetidos no local, para que cada elemento apareça apenas uma vez e retorne o novo comprimento da matriz após a remoção.

Não use espaço extra na matriz, você deve modificar a matriz de entrada no local e fazê-lo com O (1) espaço extra.

Exemplo 1:

Dada matriz nums = [1,1,2],

A função deve retornar um novo comprimento de 2, e os dois primeiros elementos da matriz original nums são modificados para 1, 2.

Você não precisa considerar os elementos na matriz além do novo comprimento.
Exemplo 2:

Dado nums = [0,0,1,1,1,2,2,3,3,4],

A função deve retornar um novo comprimento de 5, e os cinco primeiros elementos da matriz original nums são modificados para 0, 1, 2, 3, 4.

Você não precisa considerar os elementos na matriz além do novo comprimento.


Solução 1

Lei de violência, a complexidade do tempo é maior!

Solução 2

Método de deslocamento com ponteiro duplo 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

98 artigos originais foram publicados · 91 elogios · mais de 40.000 visualizações

Acho que você gosta

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