Javascript从数组中删除重复Ints



我正在处理Leet代码挑战,试图从一个按升序排序的整数数组中删除所有重复项。

因此,例如[1,1,1,2,3,4,5,5]应该返回[1,2,3,4.5]。

我已经用一种方法解决了这个问题,但根据下面的代码,我尝试了一种不同的方法,但它似乎总是返回一个空数组[]。

有人能告诉我为什么它总是返回一个空数组吗?

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] ));

您将得到一个空数组,因为您的算法是错误的。只有当相似的数字并排时,你的算法才会正确工作。例如:

[1,1,1,2,2,5,5,5,5,5,3,3]

否则它将无法正常工作。

有很多算法可以从数组中删除重复的值。请进行简单的搜索以找到它们。但您可以通过以下方式轻松删除数组中的重复值:

function removeDuplicates(numbers) {
return [...new Set(numbers)];
}

或者:

function removeDuplicates(numbers) {
return numbers.filter((num, index, self) => index === self.indexOf(num));
}

最新更新