1. 程式人生 > >[leetcode]python3 演算法攻略-兩個陣列的交集 II

[leetcode]python3 演算法攻略-兩個陣列的交集 II

給定兩個陣列,寫一個方法來計算它們的交集。

方案一:利用collections.Counter的&運算,一步到位,找到 最小次數 的相同元素。

def intersect(nums1, nums2):
    """
    :type nums1: List[int]
    :type nums2: List[int]
    :rtype: List[int]
    """
    import collections
    a, b = map(collections.Counter, (nums1, nums2))
    return list((a & b).elements())

方案二:遍歷其中一個數組,發現相同元素時新增到新列表中,同時刪去另一個數組中的一個相同元素

def intersect(nums1, nums2):
        """
        :type nums1: List[int]
        :type nums2: List[int]
        :rtype: List[int]
        """
        res = []
        for k in nums1:
            if k in nums2:
                res.append(k)
                nums2.remove(k)
        return res