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