两个数组的交集

题目描述

image.png

思路:
1、首先想到的是python自带的set结构,解决此问题非常简单,有点偷懒了。。
代码如下:

class Solution:
    def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
        set1 = set(nums1)
        set2 = set(nums2)
        i_set = set1 & set2
        return list(i_set)
image.png

2、如果编程语言不支持集合操作,使用hash还是比较方便的,至少判断key是否存在的开销只有O(1),以下是java版的实现方法。

class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
        HashMap map = new HashMap();
        for(int i = 0; i < nums1.length; i++) {
            if (!map.containsKey(nums1[i])) {
                map.put(nums1[i], 1);
            }
        }
        HashMap map2 = new HashMap();
        for(int i = 0; i < nums2.length; i++) {
           if(map.containsKey(nums2[i])) {
               map2.put(nums2[i], 2);
           }
        }
        int[] nums3 = new int[map2.size()];
        int i = 0;
        for(Integer key: map2.keySet()) {
            nums3[i] = key;
            i++;
        }

        return nums3;
    }
}
image.png

你可能感兴趣的:(两个数组的交集)