力扣刷题-哈希表-求两个数组的交集Ⅱ

350. 两个数组的交集 II

给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。
力扣刷题-哈希表-求两个数组的交集Ⅱ_第1张图片
提示:
1 <= nums1.length, nums2.length <= 1000
0 <= nums1[i], nums2[i] <= 1000

这个题目与上一题的区别是,上一题的结果是去重之后的,不要求交集元素的个数。而本题是不止求交集元素还需要保证交集之后元素的出现次数与两个数组出现的次数一致。
其实就是加一个判断条件:在判断存在交集元素之后,看哪个计数数组次数少。

class Solution(object):
    def intersect(self, nums1, nums2):
        """
        :type nums1: List[int]
        :type nums2: List[int]
        :rtype: List[int]
        """
        temp_list1 = [0]*1001
        temp_list2 = [0]*1001
        for i in range(len(nums1)):
            temp_list1[nums1[i]] += 1
        for i in range(len(nums2)):
            temp_list2[nums2[i]] += 1
        result = []
        for i in range(1001):
            if temp_list1[i]*temp_list2[i] != 0:
                if temp_list1[i] > temp_list2[i]: # 额外判断
                    result.extend([i]*(temp_list2[i]))
                else:
                    result.extend([i]*(temp_list1[i]))
        return result

你可能感兴趣的:(leetcode刷题,leetcode,散列表,算法,数据结构,python)