【算法萌新闯力扣】:两个数组的交集

    力扣热题:两个数组的交集

开篇

 今天早上状态不错,花了较短的时间刷了4道力扣算法题。挑选了一道还不错的题目与大伙分享。

题目链接:349.两个数组的交集

题目描述

【算法萌新闯力扣】:两个数组的交集_第1张图片

代码思路

看到题目后,想到可以把一个数组用集合存起来,然后用另外一个数组的元素对集合里的元素进行判断:是否有该元素在集合中。如果有,这个元素就是符合题目要求的元素,存在另外一个集合。最后把这个集合转换成数组即可。

代码纯享版

class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
        Set<Integer> set = new HashSet<>();
        List<Integer> list = new ArrayList<>();
        for(int i: nums1) set.add(i);
        for(int k: nums2){
            if(set.contains(k) && !list.contains(k)) list.add(k);
        }
        int[] arr = new int[list.size()];
        for(int i=0; i < list.size(); i++){
            arr[i] = list.get(i);
        }
        return arr;
    }
}

代码逐行解析版

class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
        Set<Integer> set = new HashSet<>();//保存第一个数组的元素,利用set的方法方便比较
        List<Integer> list = new ArrayList<>(); //筛选最后需要的元素
        for(int i: nums1) set.add(i); //增强for循环,把第一个数组所有元素放入
        for(int k: nums2){ //遍历第二个数组,如果set和list之前都没有这个元素,就放入list
            if(set.contains(k) && !list.contains(k)) list.add(k);
        }
        int[] arr = new int[list.size()]; //创建数组,把list都元素转移到数组
        for(int i=0; i < list.size(); i++){
            arr[i] = list.get(i);
        }
        return arr; //返回数组
    }
}

结语

如果这篇文章让你有所收获,点个关注。我每天会更新力扣题的讲解,与大家一起进步。

你可能感兴趣的:(Java算法,算法,leetcode,职场和发展,java,数据结构)