集合

作者: sweetBoy_9126 | 来源:发表于2021-11-22 21:34 被阅读0次

1. 是什么?

  • 一种无序且唯一的数据结构
  • ES6 中有集合,名为 Set
  • 集合的常用操作:去重、判断某元素是否在集合中、求交集
// 去重
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]

解题思路:

  • 求交集且无序唯一
  • 使用集合

解题步骤:

  • 用集合对 nums1 去重。
  • 遍历 nums 1,筛选出 nums2 也包含的值。
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}
}

相关文章

  • 我的Swift的学习总结 -->第二周

    集合 集合:Set,定义一个集合可以写成:var 集合名 : Set<集合类型> = [集合元素],具体的集合应用...

  • markdown 测试

    集合 集合 集合 引用

  • kotlin学习第五天:集合,高阶函数,Lambda表达式

    集合 list集合 list集合分为可变集合与不可变集合。由list of创建的集合为不可变集合,不能扩容,不能修...

  • kotlin练习 ---- 集合练习

    kotlin练习 - 集合练习 Set集合 Set集合创建 Set集合的使用 List集合 List集合创建 Li...

  • 集合总结

    集合 集合分为单列集合和双列集合两种: 一.单列集合: Collection是单列集合的顶级接口: 其中有三类集合...

  • 映射、元组、集合

    映射 元组 集合 集合之seq 集合之set 集合之map

  • 16.Collection集合

    主要内容: Collection 集合 迭代器 增强for List 集合 Set 集合 1,集合 集合是java...

  • 集合与有序集合

    集合分为有序集合 (zset) 和无序集合 (set), 一般无序集合也直接说成集合 无序集合 (set) 无序集...

  • python入坑第八天|集合

    好的,各位蛇友,我们今天来学习集合。 内容: 集合的创建 集合操作符号 集合的内置函数 集合的创建 集合用set(...

  • 集合框架

    集合框架的概念 集合:存放数据的容器 集合框架:java中,用于表示集合,以及操作集合的类和接口的统称 数组与集合...

网友评论

      本文标题:集合

      本文链接:https://www.haomeiwen.com/subject/pmzbtrtx.html