set的使用和map的使用
两类查找问题
查找有无
——元素’a’是否存在?set;集合
查找对应关系(键值对应)
——元素’a’出现了几次?map;字典dict
set和map
通常语言的标准库中都内置set和map
——容器类
——屏蔽了实现细节
——了解语言中标准库例常见容器类的使用
Python中的set
add(key)
:添加元素,可以重复添加,但不会有效果
remove(key)
方法可以删除元素:
Leetcode 349 Intersection of Two Arrays
给定两个数组nums,求两个数组的公共元素。
——如nums1 = [1,2,2,1],nums2 = [2,2]
——结果为[2]。结果中每个元素只能出现一次,出现的顺序可以是任意的
1 | def intersection(nums1,nums2): |
Python中的dict(其他语言称map)
使用键-值(key-value)存储,这种key-value存储方式,在放进去的时候,必须根据key算出value的存放位置,这样,取的时候才能根据key直接拿到value。
把数据放入dict的方法,除了初始化时指定外,还可以通过key放入:
1 | >>> d['Adam'] = 67 |
in
:判断key是否存在:
1 | >>> 'Thomas' in d |
get()
方法:如果key不存在,可以返回None
,或者自己指定的value:
1 | >>> d.get('Thomas') |
若key存在则返回value
还可以用来统计string字符个数
1 | s ='aabbccdd' |
pop(key)
方法:删除一个key,对应的value也会从dict中删除
1 | >>> d.pop('Bob') |
LeetCode 350 Intersection of Two Arrays
给定两个数组nums,求两个数组的交集。
——如nums1=[1,2,2,1],nums2=[2,2]
——结果为[2,2]
——出现的顺序可以是任意的
解题:
使用dict,遍历nums1,将nums1的字符作为key,出现频率作为value。
遍历nums2,如果在dict有nums2的字符,将其加入res中,该字符对应的value减1
1 | def subString(nums1,nums2): |