349. 两个数组的交集 350. 两个数组的交集 II

349. 两个数组的交集 350. 两个数组的交集 II

链接

349. 两个数组的交集

解法一

在这里插入图片描述

class Solution {
    public int[] intersection(int[] nums1, int[] nums2)
    {
        if (nums1 == null || nums2 == null)
        {
            return null;
        }

        Set<Integer> set1 = new HashSet<>();
        Set<Integer> set2 = new HashSet<>();
        for (int j : nums1)
        {
            set1.add(j);
        }
        for (int i : nums2)
        {
            if (set1.contains(i))
            {
                set2.add(i);
            }
        }
        List<Integer> list = new ArrayList<>(set2);
        int[] ret = new int[list.size()];
        for (int i = 0; i < ret.length; i++)
        {
            ret[i] = list.get(i);
        }
        return ret;
    }
}

解法二

在这里插入图片描述

class Solution {
     public int[] intersection(int[] nums1, int[] nums2)
     {
         if (nums1 == null || nums2 == null)
        {
            return null;
        }
        Set<Integer> set = new TreeSet<>();
        for (int k : nums1)
        {
            for (int i : nums2)
            {
                if (k == i)
                {
                    set.add(k);
                }
            }
        }
        int[] ret = new int[set.size()];
        List<Integer> list = new ArrayList<>(set);
        for (int i = 0; i < ret.length; i++)
        {
            ret[i] = list.get(i);
        }
        return ret;
    }
}

350. 两个数组的交集 II

解法

在这里插入图片描述

class Solution {
    public int[] intersect(int[] nums1, int[] nums2)
    {
        if (nums1 == null || nums2 == null)
        {
            return null;
        }

        List<Integer> list1 = new ArrayList<>();
        List<Integer> list2 = new ArrayList<>();

        //先把 nums1 的数放进去
        for (int i : nums1)
        {
            list1.add(i);
        }
        //处理 nums2
        for (int i : nums2)
        {
            //有交集
            if (list1.contains(i))
            {
                list2.add(i);
                list1.remove(Integer.valueOf(i));
            }
        }
        int[] ret = new int[list2.size()];
        int i = 0;
        for (int num : list2)
        {
            ret[i++] = num;
        }
        return ret;
    }
}