fish-stack / Algo

算法相关的话题
0 stars 0 forks source link

349. 两个数组的交集 #26

Open bitfishxyz opened 5 years ago

bitfishxyz commented 5 years ago

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

示例 1:

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

示例 2:

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

说明:

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

bitfishxyz commented 5 years ago

解析

题目不要求考虑重复元素,所以这题非常简单。

我们只需要将两个数组转化为Set,然后求出它们交集就行了

bitfishxyz commented 5 years ago

Java

class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
        Set<Integer> set1 = new TreeSet<>();
        for (int i = 0; i < nums1.length; i++) {
            set1.add(nums1[i]);
        }
        Set<Integer> set2 = new TreeSet<>();
        for (int i = 0; i < nums2.length; i++) {
            set2.add(nums2[i]);
        }

        // 求出两个Set的交集
        List<Integer> intersectionList = new ArrayList<>();
        set1.forEach((ele) -> {
            if (set2.contains(ele)){
                intersectionList.add(ele);
            }
        });

        // 转化为数组
        int[] intersectionArray = new int[intersectionList.size()];
        for (int i = 0; i < intersectionList.size(); i++) {
            intersectionArray[i] = intersectionList.get(i);
        }
        return intersectionArray;
    }
}