Leetcode刷题java之349. 两个数组的交集

执行结果:

通过

显示详情

执行用时 :8 ms, 在所有 Java 提交中击败了66.35%的用户

内存消耗 :37.6 MB, 在所有 Java 提交中击败了29.53%的用户

题目:

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

示例 1:

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

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

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

思路:

利用两个hashset,一个用来创建一个类似字典功能的东西,一个用来存储结果,同时利用了set的不可重复性

其实这道题的思路还是比较简单的,关键点就在于集合这个知识点是否熟悉,是否可以熟练运用集合的方法,比如迭代器什么的

代码:

class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
        //用来创建一个hashset字典
        Set set=new HashSet<>();
        //用来记录结果,同时也利用了set的不可重复的特性
        Set set1=new HashSet<>();
        //选择一个小的来创建字典
        if(nums1.length>=nums2.length)
        {
            for(int x:nums2)
            {
                set.add(x);
            }
            for(int y:nums1)
            {
                if(set.contains(y))
                {
                    set1.add(y);
                }
            }
        }else
        {
            for(int x:nums1)
            {
                set.add(x);
            }
            for(int y:nums2)
            {
                if(set.contains(y))
                {
                    set1.add(y);
                }
            }
        }
        //利用迭代器将集合中的内容取出来
        Iterator it=set1.iterator();
        int[] result=new int[set1.size()];
        int index=0;
        while(it.hasNext())
        {
            result[index++]=it.next();
        }
        return result;
    }
}

 

你可能感兴趣的:(java,Leecode,哈希,数组)