集合

2021-11-22  本文已影响0人  sweetBoy_9126

1. 是什么?

// 去重
const arr = [1,1,2,2]
const arr2 = [...new Set(arr)];

// 判断元素是否在集合中
const set = new Set(arr);
const has = set.has(3)

// 求交集
const set2 = new Set([2,3])
const set3 = new Set([...set].filter(item => set2.has(item)))

// 求差集
const set4 = new Set([...set].filter(item => !set2.has(item)))

2. 场景

2.1. 两个数组的交集 leetCode 349

给定两个数组,编写一个函数来计算它们的交集。
输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2]

解题思路:

解题步骤:

var intersection = function(nums1, nums2) {
    return [...new Set(nums1)].filter(n => nums2.includes(n))
};

时间复杂度 filter 一次遍历是 O(n),里面的 includes 又会遍历一遍又是 O(n) 所以是 O(n^2)
空间复杂度里面只声明了一个数组,所以 是 O(n)

Set 操作

遍历

var set = new Set([1,2,3])
set.add({a: 1,b:1})
for (let key of set) {
    console.log(key) // 1 2 3 {a: 1, b: 1}
}
上一篇 下一篇

猜你喜欢

热点阅读