class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
}
};
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] 也是可通过的
提示:
1 <= nums1.length, nums2.length <= 1000
0 <= nums1[i], nums2[i] <= 1000
原站题解
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]))