JS数据结构-集合

1.什么是集合?

  • 一种有序且唯一的数据结构
  • ES6中封装好了集合,名为Set
  • 在这里插入图片描述

2.常用操作

  • 判断元素是否在集合中 has
  • 添加元素 add
  • 删除元素 delete
  • 集合大小 size
  • 求交集
  • 求并集
  • 求差集
  • 集合转数组
  • 数组转集合

3.使用示例

//创建集合
let a = new Set([1,2,3]);
let b = new Set([3,4,5]);

//判断元素是否在集合中
const has = a.has(1);  // true

//添加元素到集合中
a.add(6);   // {1,2,3,6}

//删除集合中元素
a.delete(6); // {1,2,3}

//集合大小
console.log(a.size)  //3

//求并集
let union = new Set([...a,...b]);  //{1,2,3,4,5}

//求交集,a中有并且b中也有的元素
let intersect = new Set([...a].filter(x => b.has(x))); //{3}

//求差集,a中有并且b中没有的元素
let difference = new Set([...a].filter(x => !b.has(x))); {1,2}

//集合转数组
const myArray1 = [...a];
const myArray2 = Array.from(a);

//数组转集合
const mySet = new Set([8,8,8]);


4.LeetCode

接下来使用集合这个数组结构来刷LeetCode有关集合的题目,巩固提升对集合的了解。

题号349.求两个数组的交集(简单)

题目要求:
在这里插入图片描述

解题思路:
使用集合,过滤出数组一有,数组二也有的元素,将数组转换为集合自动去重,将集合转换为数组返回。

编写代码

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

复杂度分析

  • 时间复杂度: O(m*n) ,m是nums1的长度,n是nums2的长度。
  • 空间复杂度: O (m) 去重后nums1的长度
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值