两个数组的交集 II

发布时间:2024年01月15日

题目链接

两个数组的交集 II

题目描述

注意点

  • 返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)
  • 可以不考虑输出结果的顺序

解答思路

  • 使用哈希表存储nums1中的元素及出现次数(同一个元素在两个数组中都出现多次结果集中也需要加入多次该元素),随后根据哈希表中未判断相交元素数量判断nums2中某个元素是否还能nums1中的元素相交

代码

class Solution {
    public int[] intersect(int[] nums1, int[] nums2) {
        Map<Integer, Integer> map = new HashMap<>();
        for (int num : nums1) {
            map.put(num, map.getOrDefault(num, 0) + 1);
        }
        List<Integer> list = new ArrayList<>();
        for (int num : nums2) {
            if (map.get(num) != null && map.get(num) > 0) {
                list.add(num);
                map.put(num, map.get(num) - 1);
            }
        }
        int[] res = new int[list.size()];
        for (int i = 0; i < list.size(); i++) {
            res[i] = list.get(i);
        }
        return res;
    }
}

关键点

文章来源:https://blog.csdn.net/weixin_51628158/article/details/135556032
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。