哈希表-两个数组的交集

解法:由于同一个list中可能存在重复元素,所以考虑采用计数的方式解决问题,具体思路如下:

首先构建一个dict来记录list中的元素个数,称为count_dict;count_dict中的元素是一个长度为2的list,分别存储nums1和nums2中元素i的个数

class Solution:
    def intersect(self, nums1: List[int], nums2: List[int]) -> List[int]:
        count_dict = {}     
        for i in nums1:
            if i not in count_dict:
                count_dict[i] = [1, 0]
            else:
                count_dict[i][0] += 1
        for i in nums2:
            if i not in count_dict:
                # nums2中有但nums1中没有的元素,就没必要再做记录了
                continue
            count_dict[i][1] += 1
            result_list = []
        for key in count_dict:
            # 遍历,统计某个元素i在nums1和nums2中出现次数的较小值num,若num不为0,则将num个元素i加入到结果list(result_list)中
            num = min(count_dict[key])
            if num:
                result_list += [key]*num
        return result_list

 

 列表还支持拼接操作

 

 

猜你喜欢

转载自www.cnblogs.com/GumpYan/p/13163961.html