Java编程练习之:两个数组的交集 II

文章目录

  • 1. 题目要求
  • 2. 相关知识
    • 2.1 Java 遍历哈希表(字典)中的所有 key
    • 2.2 Java 删除列表中的所有null项
    • 2.3 Java 实现字符串 string 类型到 int 类型的转换
  • 3. 解题思路
  • 4. 代码实现
  • 5. 结果演示

1. 题目要求

Java编程练习之:两个数组的交集 II_第1张图片

2. 相关知识

2.1 Java 遍历哈希表(字典)中的所有 key

使用 for each 来遍历所有的 key,其中:
Java编程练习之:两个数组的交集 II_第2张图片

2.2 Java 删除列表中的所有null项

在这里插入图片描述

2.3 Java 实现字符串 string 类型到 int 类型的转换

Java编程练习之:两个数组的交集 II_第3张图片

3. 解题思路

  • nums1 放到一个 map 里面,按照 (key,value) --> (i, Integer.toString(nums1[i])) 的形式
  • nums2 放到 map2 里面
  • 比对 map 和 map2 中所有的项,如果相同的,就把这个项放到 arr 里面,并且把这个项在map 和 map2 中都设置成 null,这样做可以避免出现重复的时候的匹配错误问题,例如:
    • nums1 = {1,2,2,3,4}
    • nums2 = {2,3,3}
    • 如果不把比较完的位置设为 null 则会出现如下问题:
    • 按照上图这种方式,取出来的交集值应该是 {2,2,3,3} 但是正确的交集应该是 {2,3,3}
  • 然后将 arr 中的值放到一个 列表变量 list 中,为了后面规定的返回类型。

4. 代码实现

class Solution {
    
    public static int[] intersect(int[] nums1, int[] nums2) {
        HashMap<Integer, java.lang.String> map = new HashMap<>();
        HashMap<Integer, java.lang.String> map2 = new HashMap<>();
        ArrayList<String> arr = new ArrayList<>();

        int[] list = new int[0];
        
        
        if (nums1.length==0&&nums2.length==0)
            return list;
        else if (nums1.length==0)
            return list;
        else if (nums2.length==0)
            return list;

        for (int i = 0; i < nums1.length; i++) {
            map.put(i, Integer.toString(nums1[i]));
        }
        

        for (int i = 0; i < nums2.length; i++) {
            map2.put(i, Integer.toString(nums2[i]));
        }

        for (int key : map.keySet()
        ) {
            for (int key2 : map2.keySet()
            ) {
                if (Objects.equals(map.get(key), map2.get(key2))) {
                    arr.add(map.get(key));
                    map.put(key, null);
                    map2.put(key2, null);
                }
            }

        }
        while(arr.remove(null));


        list = new int[arr.size()];
        for (int i = 0; i < arr.size() ; i++) {
            list[i] = Integer.parseInt(arr.get(i));
        }

        return list;

    }
}

5. 结果演示

Java编程练习之:两个数组的交集 II_第4张图片

你可能感兴趣的:(java语言学习)