349 两个数组的交集

题目

给定两个数组,编写一个函数来计算它们的交集。

示例 1:

输入: nums1 = [1,2,2,1], nums2 = [2,2]
输出: [2]

示例 2:

输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出: [9,4]

说明:

  • 输出结果中的每个元素一定是唯一的。
  • 我们可以不考虑输出结果的顺序。

方案

1、题目本身不考虑效率的话,特别简单,两个for循环加去重即可搞定,如方案一。但是效率真的好低好低。利用python3耗时140ms。不忍直视。果然for循环的效率及其低下。另外,有在找到元素后将其从两个列表中删除,减少循环次数,但是执行时间仍不理想。

2、方案二较方案一轻便,且耗时80ms,效率已经有极大提升。

代码

方案一:

class Solution:
    def intersection(self, nums1, nums2):
        """
        :type nums1: List[int]
        :type nums2: List[int]
        :rtype: List[int]
        """
        temp = []
        for i in nums1:
            for j in nums2:
                if i == j:
                    temp.append(i)
        return list(set(temp))

方案二:

class Solution:
    def intersection(self, nums1, nums2):
        """
        :type nums1: List[int]
        :type nums2: List[int]
        :rtype: List[int]
        """
        return list(set(nums1) & set(nums2))

posted on 2018-12-27 14:45  罗盼  阅读(124)  评论(0编辑  收藏  举报

导航