2024/12/4 【哈希表】LeetCode 349.两个数组的交集 【√】
文心一言:
Python 的集合类型有一个 &
操作符,可以用来计算两个集合的交集。
class Solution: def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]: nums1_set = set(nums1) nums2_set = set(nums2) ans = nums1_set & nums2_set return list(ans)
更加简洁的版本:
class Solution: def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]: return list(set(nums1) & set(nums2))
代码随想录:
在C++中,用unordered_set,直接使用set 不仅占用空间比数组大,而且速度要比数组慢,set把数值映射到key上都要做hash计算的。不要小瞧 这个耗时,在数据量大的情况,差距是很明显的。
使用字典和集合:
class Solution: def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]: table = {} for x in nums1: table[x] = table.get(x, 0) + 1 ans = set() for x in nums2: if x in table: ans.add(x) del table[x] return list(ans)
get
是 Python 字典(dict
)对象的一个方法,用于访问字典中的某个键对应的值。与直接使用方括号 []
获取值不同,get
方法提供了一个安全的访问方式,如果键不存在,它不会引发异常,而是返回一个默认值(如果提供了默认值的话)。
语法:
key
:字典中要查找的键。default
(可选):如果字典中没有该键,get
会返回该默认值。如果未提供默认值,get
会返回None
。