Leetcode——349-两数组交集

题目描述

给定两个数组 nums1 和 nums2 ,返回 它们的 交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序
输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2]
提示:
  • 1 <= nums1.length, nums2.length <= 1000
  • 0 <= nums1[i], nums2[i] <= 1000

参考实现

方式1

    public static int[] intersection(int[] nums1, int[] nums2) {
        HashMap<Integer, Integer> map = new HashMap<>();
        //放进 map 里,k == 数组值,v 指定 1
        for (int i : nums1) {
            map.put(i, 1);
        }
        HashSet<Integer> set = new HashSet<>();
        //声明 set,遍历数组2,如果1取到等于1的值 说明是交集元素,存set
        for (int j : nums2) {
            if (map.getOrDefault(j, 0) == 1) {
                set.add(j);
            }
        }
        int[] arr = new int[set.size()];
        int i = 0;
        for (Integer integer : set) {
            arr[i++] = integer;
        }
        return arr;
    }

方式2

    public static int[] intersection1(int[] nums1, int[] nums2) {
        int[] ints = new int[1001];
        int[] ints1 = new int[1001];
        for (int i : nums1) {
            ints[i]++;
        }
        for (int i : nums2) {
            ints1[i]++;
        }
        ArrayList<Integer> list = new ArrayList<>();
        for (int i = 0; i < 1002; i++) {
            if (ints[i] > 0 && ints1[i] > 0) {
                list.add(i);
            }
        }
        int index = 0;
        int res[] = new int[list.size()];
        for (Integer i : list) {
            res[index++] = i;
        }
        return res;
    }

 

 

posted @ 2024-07-19 07:20  晓枫的春天  阅读(4)  评论(0编辑  收藏  举报