首页 > 编程语言 >leedcode【349】. 两个数组的交集——Java解法

leedcode【349】. 两个数组的交集——Java解法

时间:2024-05-28 12:33:55浏览次数:22  
标签:Java 数组 int leedcode 349 set1 set2 nums1 nums2

Problem: 349. 两个数组的交集

  1. 题目
  2. 思路
  3. 解题方法
  4. 复杂度
  5. Code
  6. 效果

题目

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

示例 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

思路

内容不重复、无序,可以考虑集合set

  1. 遍历数组nums1,将其值存放在set1中
  2. 遍历数组nums2,如果set1中存在,则保存交集数字至set2中
  3. set2即为两数组交集,将set2中的值放在新定义数组里输出

解题方法

哈希Set

复杂度

时间复杂度:

O(m+n)O(m+n)O(m+n)

空间复杂度:

O(n)O(n)O(n)

Code

Java

class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
        if(nums1 == null || nums1.length == 0 || nums2 == null || nums2.length == 0){
            return new int[0];
        }
        Set<Integer> set1 = new HashSet<Integer>();
        Set<Integer> set2 = new HashSet<Integer>();
        for(int i = 0; i < nums1.length; i++){
            set1.add(nums1[i]);
        }
        for(int i = 0; i < nums2.length; i++){
            if(set1.contains(nums2[i])){
                set2.add(nums2[i]);
            }
        }
//        return set2.stream().mapToInt(x -> x).toArray();
        int[] result = new int[set2.size()];
        int i = 0;
        for(Integer a: set2){
            result[i++] = a;
        }
        return result;
    }
}

效果

image.png

标签:Java,数组,int,leedcode,349,set1,set2,nums1,nums2
From: https://blog.csdn.net/qq_42631788/article/details/139263421

相关文章

  • leedcode【383】. 赎金信——Java解法
    Problem: 383.赎金信题目思路解题方法复杂度Code性能题目给你两个字符串:ransomNote和magazine,判断ransomNote能不能由magazine里面的字符构成。如果可以,返回true;否则返回false。magazine中的每个字符只能在ransomNote中使用一次。示例1:输入:ransomNot......
  • 前端小白必知必会:JavaScript的作用域
    文章导读:AI辅助学习前端,包含入门、进阶、高级部分前端系列内容,当前是JavaScript的部分,瑶琴会持续更新,适合零基础的朋友,已有前端工作经验的可以不看,也可以当作基础知识回顾。这篇文章瑶琴带大家学习 javascript中关于变量作用域的相关知识点。在JavaScript中,变量的作用......
  • Java-生成固定长度的随机字符串、随机字符串开头的ID、写入文件、读取文件
    packagecom.sgcc;importjava.io.*;importjava.text.DecimalFormat;importjava.util.ArrayList;importjava.util.List;importjava.util.Random;publicclassMain{publicstaticStringgenerateMixedString(intlength){Randomrandom=ne......
  • Java多线程与并行计算:深入剖析Java线程,线程池,以及利用Java进行并行计算的策略
    一、Java线程概述线程基础概念: 线程是操作系统调度的最小单元,它是进程的一部分,每个线程都有自己的程序计数器、栈和局部变量。线程之间共享进程的堆和方法区。 Java线程创建和启动: 在Java中主要有两种方式创建线程: 继承Thread类:创建一个新class,继......
  • Java项目-基于springboot+vue的时间管理系统(源码+数据库+文档)​
    如需完整项目,请私信博主基于SpringBoot+Vue的时间管理系统开发语言:Java数据库:MySQL技术:SpringBoot+MyBatis+Vue.js工具:IDEA/Ecilpse、Navicat、Maven在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括时间管理系统的网络应用,在外国时间管理系统已经......
  • Java项目-基于springboot+vue的社区维修平台(源码+数据库+文档)​
    如需完整项目,请私信博主基于SpringBoot+Vue的社区维修平台开发语言:Java数据库:MySQL技术:SpringBoot+MyBatis+Vue.js工具:IDEA/Ecilpse、Navicat、Maven21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管......
  • 【Java】变量_数据类型
    1、变量1.1简介在JavaSE(JavaPlatform,StandardEdition)中,变量是用于存储数据的容器,每个变量都有一个类型,这个类型决定了变量可以存储的数据种类以及存储这些数据所需的内存空间大小。下面将详细介绍Java中变量的声明和数据类型。1.2变量声明变量必须要先声明,才能使用......
  • Java网络编程
    Java网络编程是Java编程中一个非常重要的领域,它为程序员提供了构建网络应用程序的能力。在当今互联网时代,网络应用程序无处不在,从简单的客户端-服务器通信到复杂的分布式系统,Java网络编程都扮演着关键角色。网络模型在探讨Java网络编程之前,让我们先了解一下计算机网......
  • 滑动窗口-java
    主要通过单调队列来解决滑动窗口问题,得到滑动窗口中元素的最大值和最小值。目录前言一、滑动窗口二、算法思路1.滑动窗口 2.算法思路3.代码详解三、代码如下1.代码如下2.读入数据3.代码运行结果总结前言主要通过单调队列来解决滑动窗口问题,得到滑动窗口中......
  • JAVA------基础篇
    java基础1.JDKJDK:javadevelopmentkitJRE:javaruntimeenvironmentJDK包含JREjava跨平台:因为java程序运行依赖虚拟机,虚拟机需要有对应操作系统的版本,而jre中有虚拟机。当你想要在Linux系统下运行,则需要安装对应的虚拟机,及对应的jdk版本,而对应的jdk版本中的jre有对......