两个数组的交集-Intersection of Two Arrays执行高效算法

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

示例 1:

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

示例 2:

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

说明:

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

题目很简单,我们可以利用hashset的特性,在每次“检查”的时间复杂度就只有O(1)。以下算法空间复杂度是O(N)。

public static int[] intersection(int[] nums1, int[] nums2) {
        Set num1Set = new HashSet<>();//先将数组1的所有元素放入set,通过set直接去重
        for (int n: nums1) {
            num1Set.add(n);
        }
        Set res = new HashSet<>();//因为结果集元素也需要去重,用res set暂存结果
        for (int m : nums2){
            if(num1Set.contains(m)){
                res.add(m);
            }
        }
        int i=0;
        int[] r = new int[res.size()];
        for (int s: res) {
            r[i++] = s;
        }
        return r;
    }

 

你可能感兴趣的:(算法-排序,LeetCode)