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 方法提供了一个安全的访问方式,如果键不存在,它不会引发异常,而是返回一个默认值(如果提供了默认值的话)。

语法:

dict.get(key, default)
  • key:字典中要查找的键。
  • default(可选):如果字典中没有该键,get 会返回该默认值。如果未提供默认值,get 会返回 None
posted @ 2024-12-04 20:25  axuu  阅读(5)  评论(0编辑  收藏  举报