将数组转换为集合的时间复杂度Big-O 示例1 示例2

问题描述

因此,在JS中有多种方法可以将Array转换为Set

示例#2 肯定是 O(n),因为它正在遍历数组的所有元素。 Example#1 是否也是如此?还是JS在后台为我们做了一些优化?

如果是,使用示例1 有什么缺点?

示例1

const arr = [ 1,3,2,5 ];
const set = new Set(arr);

console.log(set);

/*
    Output: Set { 1,5 }
*/

示例2

const arr = [ 1,5 ];    
const set = new Set();
arr.map(item => set.add(item));

console.log(set);

/*
    Output: Set { 1,5 }
*/

解决方法

它仍然是O(n); JS没有一种神奇的方式将所有n元素放入Set而不实际遍历所有n元素。低于O(n)的唯一方法是跳过某些元素,如果必须将所有元素都考虑纳入Set中,这显然是不可能的。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...