继续创作,加速生长!这是我参与「日新计划 10 月更文应战」的第6天,点击查看活动详情

两个数组的交集1

标题:

给定两个数组,编写一个函数来核算它们的交集。

For Example:

示例 1:
输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2]
示例 2:
输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[9,4]

Solution:

class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
        Set<Integer> intersect = new HashSet<Integer>();
        int len1 = nums1.length;
        int len2 = nums2.length;
        Set<Integer> set = new HashSet<Integer>();
        if(len1 < len2){
            for (int i = 0; i < len2; i++) {
                if (!set.contains(nums2[i])) {
                    set.add(nums2[i]);
                }
            }
            for (int j = 0; j < len1; j++) {
                if (set.contains(nums1[j])) {
                    intersect.add(nums1[j]);
                }
            }
        } else {
            for (int i = 0; i < len1; i++) {
                if (!set.contains(nums1[i])) {
                    set.add(nums1[i]);
                }
            }
            for (int j = 0; j < len2; j++) {
                if (set.contains(nums2[j])) {
                    intersect.add(nums2[j]);
                }
            }
        }
        int[] array = new int[intersect.size()];
        int i = 0;
        for(int value:intersect) {
            array[i++] = value;
        }
        return array;
    }
}

两个数组的交集2

标题:

给定两个数组,编写一个函数来核算它们的交集。

For Example:

示例 1:
输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2,2]
示例 2:
输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[4,9]

Solution:

class Solution {
    public int[] intersect(int[] nums1, int[] nums2) {
        // 先找出比较长的数组
        if (nums1.length < nums2.length){
            return intersect(nums2, nums1);
        }
        // 寄存值与呈现的次数
        Map<Integer, Integer> map = new HashMap<Integer, Integer>();
        //遍历数组,初始化 map
        for (int i = 0; i < nums1.length; i++) {
            map.put(nums1[i], map.getOrDefault(nums1[i], 0) + 1);
        }
        int[] array = new int[nums1.length];
        int index = 0;
        for (int j = 0; j < nums2.length; j++) {
            if (map.containsKey(nums2[j])){
                array[index++] = nums2[j];
                if ((map.get(nums2[j]) - 1) <= 0){
                    map.remove(nums2[j]);
                } else {
                    map.put(nums2[j], map.get(nums2[j]) - 1);
                }
            }
        }
        int arr2[] = java.util.Arrays.copyOf(array,index);
        return arr2;
    }
}

我是杰少,如果您觉的我写的不错,那请给我 点赞+谈论+保藏 后再走哦!

往期文章:

  • 运用 Google Breakpad 来助力处理程序崩溃
  • UE4 多人游戏服务器探索
  • 运用虚幻引擎自动化东西实现自动化部署
  • 如安在 UE4 中制作一扇自动开启的大门
  • 如安在 UE4 顶用代码去控制人物移动
  • 怎么给 UE4 场景增加游戏人物
  • UE4:Android 平台开发实践攻略
  • UE4 开发避坑攻略(继续更新)
  • 新年开工啦,放个小烟花庆祝一下
  • 聊聊与苹果审核员的爱恨情仇(下)
  • 聊聊与苹果审核员的爱恨情仇(上)
  • 一名普通东西人的 2021 | 2021年终总结
  • 二叉树刷题总结:二叉查找树的特点
  • 二叉树总结:二叉树的特点
  • 二叉树总结:二叉树的修正与构造
  • StoreKit2 有这么香?嗯,我试过了,真香
  • 看完这篇文章,再也不怕面试官问我怎么构造二叉树啦!
  • 那帮做游戏的又想让我们氪金,太坏了!
  • 手把手带你撸一个网易云音乐主页 | 适配篇
  • 手把手带你撸一个网易云音乐主页(三)
  • 手把手带你撸一个网易云音乐主页(二)
  • 手把手带你撸一个网易云音乐主页(一)
  • 代码要写注释吗?写你就输了
  • Codable发布这么久我就不学,摸鱼爽歪歪,哎~就是玩儿
  • iOS 高雅的处理网络数据,你真的会吗?不如看看这篇
  • UICollectionView 自定义布局!看这篇就够了

请你喝杯 ☕️ 点赞 + 重视哦~

  1. 阅读完记住给我点个赞哦,有 有动力
  2. 重视公众号— HelloWorld杰少,第一时间推送新姿态

最终,创作不易,如果对我们有所协助,希望我们点赞支撑,有什么问题也可以在谈论区里讨论~**