列表

详情


349. 两个数组的交集

给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序

 

示例 1:

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

示例 2:

输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[9,4]
解释:[4,9] 也是可通过的

 

提示:

相似题目

两个数组的交集 II

三个有序数组的交集

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: vector<int> intersection(vector<int>& nums1, vector<int>& nums2) { } };

golang 解法, 执行用时: 4 ms, 内存消耗: 3 MB, 提交时间: 2020-11-26 10:41:49

func intersection(nums1 []int, nums2 []int) (res []int) {
    if len(nums2) < len(nums1) {
        nums1, nums2 = nums2, nums1
    }

    m := make(map[int]bool)
    for _, n := range nums1 {
        m[n] = true
    }
    ans := make([]int, 0)
    for _, n := range nums2 {
        if m[n] {
            ans = append(ans, n)
            m[n] = false
        }
    }
    return ans

}

golang 解法, 执行用时: 8 ms, 内存消耗: 2.8 MB, 提交时间: 2020-11-26 10:25:52

func intersection(nums1 []int, nums2 []int) (res []int) {
    sort.Ints(nums1)
    sort.Ints(nums2)
    for i, j := 0, 0; i < len(nums1) && j < len(nums2); {
        x, y := nums1[i], nums2[j]
        if x == y {
            if res == nil || x > res[len(res)-1] {
                res = append(res, x)
            }
            i++
            j++
        } else if x < y {
            i++
        } else {
            j++
        }
    }
    return
}

python3 解法, 执行用时: 60 ms, 内存消耗: 13.6 MB, 提交时间: 2020-11-26 10:18:19

class Solution:
    def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
        return list(set(nums1) & set(nums2))

python3 解法, 执行用时: 76 ms, 内存消耗: 13.8 MB, 提交时间: 2020-11-26 10:17:28

class Solution:
    def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
        return list(set([i for i in nums1 if i in nums2]))

上一题