LeetCode349-两个数组的交集/

交集,一开始就想到了Set,因为他里面的数字是没有重复的。

1、把数组1放到set1里面,这样set1里面全是独立的、不重复的数字。

2、把数组2的数字和set1的比较,如果存在,就放到set2里面去,这是为了对结果进行去重。

3、最后set2的元素,就是解。

 

set.contains 是 链表+红黑树的 所以查找是logn

 

 public int[] intersection(int[] nums1, int[] nums2) {

        Set<Integer> set1 = new HashSet<>();
        Set<Integer> set2 = new HashSet<>();

        for(int i=0;i<nums1.length;i++){
            set1.add(nums1[i]);
        }

        //这样是为了去重
        for(int i=0;i<nums2.length;i++){
            if(set1.contains(nums2[i])){
                set2.add(nums2[i]);
            }
        }

        //set2里面就是结果
        int [] result = new int[set2.size()];

        Iterator<Integer> iterator = set2.iterator();

        int count = 0;

        while (iterator.hasNext()){
            result[count++]=iterator.next();
        }

        return result;
    }

 

posted @ 2018-09-16 15:24  朋友圈  阅读(232)  评论(0编辑  收藏  举报