JS字典

字典:类似集合,也是存储唯一值的数据结构,但以健值对的形式来存储。
利用键值对来做各种映射关系
ES6中有字典,名为Map.
字典的常用操作:键值对的增删改查

const m = new Map() //实例化map
 
//增  键是'a',值为'aa'
m.set('a', 'aa')
m.set('b', 'bb')
m.set('c', 'cc')

//查看键 的值
m.get('a')

//删除
m.delete('b')
m.clear() //清空

//改 直接覆盖即可
m.set('a', 'aaa')

LeetCode 349 两个数组的交集(字典解法)
解题思路:
求nums1和nums2两个数组的交集
用字典建立一个映射关系,记录nums1里有的值
这个字典的键就是nums1的值,映射关系对应的值为是否存在 true/false
遍历nums2找出nums1里也有的值
解题步骤:
1、新建一个字典,遍历nums1,填充字典。
2、遍历nums2 遇到字典里有的值就选出来,并从字典中删除。

var intersection = function(nums1, nums2) {
    const map = new Map()
    nums1.forEach(n=> {
        map.set(n,true)
    })
    const res = []
    nums2.forEach(n=>{
        if(map.get(n)){
            res.push(n)
            map.delete(n)
        }
    })
    return res;
};

时间复杂度:我们有两个没有嵌套的循环 所以就是nums1.length+nums2.length
O(m+n)
空间复杂度:输入输出都是数组但是不能算入空间复杂度因为空间复杂度计算的是临时变量的内存消耗,我们中间临时变量是一个字典,字典不是数组矩阵但是它存储的值也可能是线性增长的 所以空间复杂度为O(m)
nums1.length = m,字典最差的情况下可能存储m个变量

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 是什么? 与集合类似,字典也是一种存储唯一值的数据结构,但它是以键值对的形式来存储 ES6 中的字典就是 M...
    sweetBoy_9126阅读 179评论 0 1
  • 2019.12-2020.02后端面试材料分享,算法篇。 拿到了字节offer,走完了Hello单车和达达的面试流...
    润着阅读 871评论 0 0
  • 一、概念: 数组是一种线性表数据结构,用一组连续的内存空间,来存储一组具有相同类型的数据。1、了解线性表(每个数据...
    王小鹏的随笔阅读 320评论 0 0
  • 第1天 Jewels and Stones (771) 题号771 Jewels and Stones 题目描述:...
    F嘉阳阅读 807评论 0 0
  • 51. 加法 不使用+、-,计算两数字之和 52. 至少有K个重复字符的最长子串 找到给定字符串(由小写字符组成)...
    毒死预言家的女巫阅读 659评论 0 0