349-两个阵列的交集

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

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

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

注意: 结果中的每个元素都必须是唯一的。 结果可以是任何顺序。

解法1:
使用HashSet和迭代器:
  public static int[] intersection(int[] nums1, int[] nums2) {
        Set hashset1=new HashSet();
        Set hashset2=new HashSet();
        int i=0,j=0,k=0;
        while (i<nums1.length||j<nums2.length)
        {
            if (i<nums1.length)
            {
                hashset1.add(nums1[i]);
                i++;
            }
            if (j<nums2.length)
            {
                hashset2.add(nums2[j]);
                j++;
            }
        }
        int A[]=new int[hashset1.size()+hashset2.size()];
        Iterator iterator1=hashset1.iterator();
        while (iterator1.hasNext())
        {
            int a= (int) iterator1.next();
            if (hashset2.contains(a))
            {
                A[k]=a;
                k++;
            }
        }
        int B[]=new int[k];
        for (int m=0;m<k;m++)
        {
           B[m]=A[m];
        }
        return B;
    }

改进后:
public static int[] intersection(int[] nums1, int[] nums2) {
        Set hashset1=new HashSet();
        Set hashset2=new HashSet();

        for (int i=0;i<nums1.length;i++)
        {
            hashset1.add(nums1[i]);
        }
        for (int j=0;j<nums2.length;j++)
        {
            if (hashset1.contains(nums2[j]))
            {
                hashset2.add(nums2[j]);
            }
        }
        int m=0;
        int A[]=new int[hashset2.size()];
        Iterator iterator=hashset2.iterator();
        while (iterator.hasNext())
        {
            int a= (int) iterator.next();
            A[m]=a;
            m++;
        }
        return A;
    }
原文地址:https://www.cnblogs.com/dloading/p/10706100.html