问题描述:
如何以 `O(n)` 的时间复杂度实现字符序列的去重,如对以下数组去重
[1, 'a', '1', 2, '2', 'b', 'b', null, null, , ,'null']
1 和 ‘1’不算重复,undefined, null 也要保留。不使用ES6的语法。
问题描述:
如何以 `O(n)` 的时间复杂度实现字符序列的去重,如对以下数组去重
[1, 'a', '1', 2, '2', 'b', 'b', null, null, , ,'null']
1 和 ‘1’不算重复,undefined, null 也要保留。不使用ES6的语法。
可以放在桶里
var arr = [1, 'a', '1', 2, '2', 'b', 'b'];
var obj = {};
for (var i = 0; i < arr.length; ++i) {
obj[arr[i]] = 1;
}
Object.keys(obj);
复杂度:O(2n),一般约定数字是可以忽略的,即 O(n)
判断全等不可以么?楼上已经提供es6
var arr = [1, 'a', '1', 2, '2', 'b', 'b']
arr.sort();
for(var i = 0 ;i <arr.length;i++){
for(var j = i+1;j<arr.length;j++){
arr[i]===arr[j] ? arr.splice(i,1) :''
}
}
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
4 回答2.5k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
如果不去重对象的可以用下面的