LeetCode--349.两个数组的交集(哈希表)

题目描述

给定两个数组 nums1nums2 ,返回 它们的 交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序

示例 1:

复制代码
输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2]

示例 2:

复制代码
输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[9,4]
解释:[4,9] 也是可通过的

提示:

  • 1 <= nums1.length, nums2.length <= 1000
  • 0 <= nums1[i], nums2[i] <= 1000

代码

方法一

java 复制代码
class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
        // 给定一个哈希数组
        boolean[] hash = new boolean[1001];
        for(int i : nums1){
            hash[i] = true;
        }
        // 结果列表
        List<Integer> resList = new ArrayList<>();
        for(int i : nums2){
            // 如果数组中有nums1添加的元素,加入结果集合
            if(hash[i]){
                // 防止2次添加
                hash[i] = false;
                resList.add(i);
            }
        }
        // 转换成数组
        int[] res = new int[resList.size()];

        for(int i=0; i<resList.size(); i++){
            res[i] = resList.get(i);
        }
        return res;

    }
}

方法二

java 复制代码
class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
        // 给定一个哈希数组
        int[] hash = new int[1001];
        for(int i : nums1){
            hash[i] = 1;
        }
        // 结果集合
        Set<Integer> resSet = new HashSet<>();
        for(int i : nums2){
            // 如果数组中有nums1添加的元素,加入结果集合
            if(hash[i] == 1){
                resSet.add(i);
            }
        }

        // 通过StreamAPI将结果转为数组
        return resSet.stream().mapToInt(Integer::intValue).toArray();

    }
}
相关推荐
方也_arkling5 分钟前
【Java-Day15】API篇-ArrayList集合
java·开发语言
AI人工智能+电脑小能手7 分钟前
【大白话说Java面试题 第89题】【Mysql篇】第19题:Hash 索引和 B+ 树索引的区别?它们在使用方面的区别?
java·数据库·mysql·面试·哈希算法
我是一颗柠檬9 分钟前
【Java后端技术亮点】动态路由权限(按钮级权限),细粒度控制到按钮级别
java·开发语言·后端·状态模式
Fanfanaas11 分钟前
C++ 继承
java·开发语言·jvm·c++·学习·算法
蚰蜒螟12 分钟前
走进 Linux 内核:从 touch 命令到磁盘 inode 的完整旅程
java·linux·前端
lqqjuly13 分钟前
模型合并与融合:理论、算法与可运行实现—从损失曲面几何到多模型融合
算法
zzqssliu16 分钟前
taocarts 跨境独立站 SEO 优化实践(多语言 + 反向海淘场景)
java·javascript·php
memcpy023 分钟前
LeetCode 2144. 打折购买糖果的最小开销【贪心】
算法·leetcode·职场和发展
在繁华处23 分钟前
Java从零到熟练(十一):Spring框架入门
java·开发语言·spring
小锋java123424 分钟前
【技术专题】LangChain4j 开发Java Agent智能体 - 整合SpringBoot4
java·人工智能