数组去重
JesseZhao1990 opened this issue · 6 comments
JesseZhao1990 commented
/**
* @param {number[]} nums
* @return {number}
*/
var removeDuplicates = function(nums) {
nums = nums.sort();
function loop(nums){
for(var i=1;i<=nums.length;i++){
if(nums[i] === nums[i-1]){
nums.splice(i,1);
loop(nums);
return;
}
}
}
loop(nums);
return nums;
};
console.log(removeDuplicates([1,1,2]));
//console.log(removeDuplicates([0,0,1,1,1,2,2,3,3,4]));
/* 方法二 */
var removeDuplicates1 = function(nums) {
var set = new Set();
for(var i =0;i<nums.length;i++){
set.add(nums[i]);
}
return [...set];
}
console.log(removeDuplicates1([1,1,2]));
console.log(removeDuplicates1([0,0,1,1,1,2,2,3,3,4]));
lincenying commented
[0,0,1,1,1,2,2,3,3,4].reduce((curr, next) => curr.indexOf(next) === -1 ? curr.concat(next) : curr, [])[...new Set([1,2,3,3])]pinkhide27 commented
Array.from(new Set([1,1,2,2,3,4,5,5,5,6,6,6]))royalrover commented
第一种去重的时间复杂度有O(n2)了吧
JesseZhao1990 commented
@royalrover 并没有吧~虽然看起来好像有循环的嵌套。但是有return。return起了一个剪枝的作用。其实就是对一个数组扫描了一遍。
royalrover commented
取其最坏情况的阶数
gauseen commented
let arr = [0, 0, 1, 1, 1, 2, 2, 3, 3, 4]
arr.filter((item, index) => arr.indexOf(item) === index)