Estoy trabajando en un desafío de código de Leet en el que intento eliminar todos los duplicados de una matriz ascendente ordenada de enteros.
Entonces, por ejemplo, [1,1,1,2,2,3,4,5,5,5] debería devolver [1,2,3,4,5].
He resuelto esto de una manera, pero estaba intentando de una manera diferente según el código a continuación, pero parece que siempre devuelve una matriz vacía [].
¿Alguien podría señalarme la dirección (de lo que podría ser muy obvio pero no lo he visto) de por qué esto siempre devuelve una matriz vacía?
var removeDuplicates = function(nums) { for(let i = 0; i < nums.length; i++) { let counter = 0; for(let x = i + 1; x < nums.length; x++) { // Remove element if above is true if(nums[i] == nums[x]) { counter++; } } nums.splice(i + 1, counter); } return nums; }; console.log(removeDuplicates( [1,1,1,2,2,3,4,5,5,5] ));Obtendrá una matriz vacía, porque su algoritmo es incorrecto. Su algoritmo funcionará correctamente solo cuando los números similares estén uno al lado del otro. Por ejemplo:
[1,1,1,2,2,5,5,5,5,5,3,3]De lo contrario, no funciona correctamente.
Hay muchos algoritmos para eliminar valores duplicados de una matriz. Por favor, realice una búsqueda simple para encontrarlos. Pero puede eliminar fácilmente valores duplicados en una matriz de estas formas:
function removeDuplicates(numbers) { return [...new Set(numbers)]; }O:
function removeDuplicates(numbers) { return numbers.filter((num, index, self) => index === self.indexOf(num)); }