leetcode刷题之哈希表相关问题js

news/2024/10/25 15:36:21/

目录

    • 242.有效的字母异位符
      • 方法一:使用两个map对象来保存
      • 方法二:使用一个map
    • 349.两个数组的交集
      • 方法一:set+map+for of
      • 方法二:只是用set

242.有效的字母异位符

方法一:使用两个map对象来保存

时间复杂度:O(n) 空间复杂度O(n)

var isAnagram = function(s, t) {if(s.length!==t.length) return false //如果长度不等,那么一定不满足要求//分别对字符串s t进行遍历,然后分别使用map对象进行保存let map1 = new Map()let map2 = new Map()//字符串是可迭代的,可以使用for of进行遍历for(let item of s){map1.set(item,map1.get(item)+1||1)}for(let item of t){map2.set(item,map2.get(item)+1||1)}//第三个循环 使用for of从map1中拿key,然后对map2中的进行比较for(let [key,val] of map1){//注意,当map1中的所有的属性所对应的值都和map2中的相等的时候,不存在map2中比map1多一个属性的情况if(!map2.get(key)||map2.get(key)!==val){return false}}return true
};

方法二:使用一个map

var isAnagram = function(s, t) {//使用一个map对象let map = new Map()for(let val of s){map.set(val,map.get(val)+1||1)}//然后遍历t,从map中进行相减for(let key of t){//map中没有这个键if(!map.has(key)) return falsemap.set(key,map.get(key)-1)if(map.get(key)==0) map.delete(key)}if(map.size==0) return truereturn false
};

349.两个数组的交集

方法一:set+map+for of

var intersection = function(nums1, nums2) {//时空复杂度都是O(n)//使用一个map对象来保存num1中的每一个键,然后使用arr保存两者间的相同的let map = new Map()let arr = []for(let val of nums1){map.set(val,map.get(val)+1||1)}for(let val of nums2){if(map.has(val)){arr.push(val)}}//set进行去重,然后再将对象转换为数组return Array.from(new Set(arr))
};

方法二:只是用set

时空都是O(n)
new Set()毫无疑问是O(n)
Array.from()也是O(n),原因见第三条:

var intersection = function(nums1, nums2) {let a = new Set(nums1)let b = new Set(nums2)return [...a].filter(item =>b.has(item))
};

http://www.ppmy.cn/news/217641.html

相关文章

Vm虚拟机adb主机的雷电模拟器

原理就是使用桥接模式,直接桥接到路由器上,让模拟器和虚拟机都挂在路由器的HDCP里。 雷电模拟器桥接: VM虚拟机win7桥接设置以及虚拟机adb主机的雷电模拟器: 发现网上没有这类教程,可能这种使用场景太少了吧。故发出…

安装模拟器

2、双击安装 3、自定义安装 4、点击快速安装 5、安装后,点击立即使用 6、出现以下界面,证明安装OK

Elasticsearch基础

Elasticsearch是搜索服务器 视频地址:https://www.bilibili.com/video/BV1Sy4y1G7LL/?p6&spm_id_from333.880.my_history.page.click&vd_sourcefc7fa697b97f292319c5b0cde4755484 下载地址:[https://artifacts.elastic.co/downloads/elasticse…

博通1300亿美元收购高通,一场充满大饼和落井下石的“大戏”

前天,一则爆炸性消息传来,上周五博通尝试收购高通的传闻成真——博通(Broadcom)提议以每股70美元现金加股票方式收购高通,交易价值为1300亿美元。出价包含60美元的现金和10美元的股票,比11月2日高通收盘价溢…

杂项-公司:高通百科

ylbtech-杂项-公司:高通百科 高通创立于1985年,总部设于 美国 加利福尼亚州 圣迭戈市,33,000多名员工遍布全球。高通公司是全球 3G、 4G与 5G技术研发的领先企业,目前已经向全球多家制造商提供技术使用授权,涉及了世界…

minigui bin字库制作

bin字库的格式,bin字库如何生成,bin字库如何解析? 为何选择.bin字库? 芯片处理性能不是很好时,为了降低cpu处理数据量,才选择使用.bin字库;矢量字库虽然美观,但解析耗时故未采用。 …

6分32秒售罄!魅族16 X为什么如此受欢迎?

最近手机市场一下子上新了一批新产品,果然9月份被誉为国产手机行业的“金九银十”。其中,魅族在9月19日一口气发布了三款新机型,当中呼声最高的自然是魅族16 X,这款“轻奢旗舰手机”把魅族16th很多配置都保留下来,不过…

Redisson分布式锁使用

一、使用 RedisTemplate 操作分布式锁 原子加锁(uuid Value过期时间)原子解锁(lua脚本)加长过期时间 UUID :让锁区分,防止错删其他锁设置锁过期时间:当业务异常导致无法释放锁形成锁死,设置过期时间自动释…