(六)数据结构之“集合”
数据结构之“集合”
- 集合是什么?
- LeetCode:349.两个数组的交集
- 前端与集合:使用ES6的Set
- 思考题
集合是什么?
一种无序且唯一的数据结构
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)));
LeetCode:349.两个数组的交集
输入:nums1 = [1,2,2,1],nums2 = [2,2]
输出:[2]
解题思路
求交集且无序唯一
使用集合
解题步骤
用集合对nums1去重
遍历nums1,帅选出nums2中包含的值
时间复杂度O(m * n),空间复杂度O(m)
m是去重后nums1的长度,n是nums2的长度
nums1和nums2都是已有的存储,额外临时的存储是num1去重后的长度
前端与集合:使用ES6的Set
Set操作
使用Set对象:new、add、delete、has、size
迭代Set:多种迭代方法、Set与Array互转、求交集/差集
let mySet = new Set();//newmySet.add(1);//add
mySet.add(5);
mySet.add(5);//因为唯一性,mySet只会有一个5
mySet.add('some text');
let o = { a: 1, b: 2 };
mySet.add(o);
mySet.add({ a: 1, b: 2 });//存储地址不一样,会被添加const has = mySet.has(o);//has
//size为5
mySet.delete(5);//delete
//size为4//多种迭代方法
for(let item of mySet) console.log(item);
for(let item of mySet.keys()) console.log(item);
for(let item of mySet.values()) console.log(item);
for(let [key, value] of mySet.entries()) console.log(key, value);//key和value一样//Set > Array
const myArr = [...mySet];
const myArr = Array.from(mySet);//Array > Set
const mySet2 = new Set([1,2,3,4]);//求交集(mySet和mySet2中都有的)
const intersection = new Set([...mySet].filter(x => mySet2.has(x)));
//求差集(mySet中有,mySet2中没有的)
const difference = new Set([...mySet].filter(x => !mySet2.has(x)));
思考题
1、在你的实际工作中使用集合完成一次去重操作
2、了解数据库中的 join 操作符吗?inner join 属于集合中的哪个操作?
(六)数据结构之“集合”相关推荐
- 《码出高效:java开发手册》六-数据结构与集合(一)
前言 本章主要是讲数据结构与集合,这章内容涉及到非常基础的知识,内容相对较多,首先从数组讲起,引申到集合框架,之后再到集合源码,最后介绍了高并发集合框架 集合 集合在代码中是collection,对应 ...
- 《码出高效:java开发手册》六-数据结构与集合(二)
前言 接上篇,第六章第二部分,上篇讲到了红黑树的FixAfterInsertion方法,这个方法原理与fixAfterDelete类似,只讲这个添加时的调整方法 红黑树 代码可以看到,调整后的根节点一 ...
- 学习javascript数据结构(三)——集合
前言 总括: 本文讲解了数据结构中的[集合]概念,并使用javascript实现了集合. 原文博客地址:学习javascript数据结构(三)--集合 知乎专栏&&简书专题:前端进击者 ...
- Redis-07Redis数据结构--有序集合ZSet
文章目录 概述 有序集合的数据结构 Redis 有序集合的部分命令 spring-data-redis 对有序集合的封装 使用 Spring 操作有序集合 注意 代码 概述 有序集合和集合类似,只是说 ...
- Redis数据结构之集合
本文来说下Redis数据结构之集合 文章目录 概述 常用集合命令 相关命令 集合内的操作命令 集合间的操作命令 内部编码 intset(整数集合) hashtable(哈希表) 具体示例 应用场景 用 ...
- Clojure学习03:数据结构(集合)
Clojure提供了几种强大的数据结构(集合) 一.集合种类 1.vector 相当于数组,如: [2 3 5] , ["ad" "adas" & ...
- 「Redis数据结构」集合对象(Set)
「Redis数据结构」集合对象(Set) 文章目录 「Redis数据结构」集合对象(Set) 一.概述 二.结构 三.编码转换 四.小结 一.概述 Set是Redis中的单列集合,其特点为不保证有序性 ...
- 《学习javascript数据结构与算法》——第六章:集合
集合无序,元素唯一,以[值,值]的形式存储元素 创建集合 function Set() {var items = {};/*判断值是否在集合中*/this.has = function(value) ...
- 三十六、Java集合中的HashMap
@Author:Runsen @Date:2020/6/3 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排名 ...
最新文章
- MFC Map 许多警告
- PHP-Socket服务端客户端发送接收通信实例详解
- 【小白学习C++ 教程】二、C++基础语法、注释和变量
- Script 入门实践
- Java NIO学习篇之NIO的基本认识
- EOS Nation更新“flash.sx遭攻击”进展:将建议MSIG根据快照将资金退还
- 分析设计数据库,优化Java程序
- HDU 4553:约会安排(区间合并)
- 11. Window open() 方法
- linux中子进程继承了父进程的什么意思,子进程从父进程处继承的文件描述符是什么东西...
- LCD1602显示中文汉字
- 【前后端异常】http/https post请求 返回415错误状态码的解决方法
- allegro铜皮优先级设置
- 人脸识别系统技术方案
- Unity Shader PostProcessing - 8 - Bloom 泛光
- 有一些C++基础的同学们如何喝下你的第一杯咖啡?
- 不用下载软件,免费将PDF文件缩小的方法分享
- 彻底清除SMSS.EXE病毒
- Zlib库的使用实现对zip文件的解压缩
- rsync实现两台服务器上的实时同步