刷题专栏(二十四):两个数组的交集

简介: 刷题专栏(二十四):两个数组的交集

前言

刷题专栏到目前已经是第二十四篇了,欢迎大家来关注我的刷题专栏,一起来刷题。

今天的这道题,还是关于数组这个最常用的数据结构相关的题。

《两个数组的交集》这道题到底如何解出来,下面一起来看一下吧。image.png

算法题:两个数组的交集

通过题目的描述来看,是要通过两个数组中,找出相交的元素。

这里面的相交的定义如何理解。

其实只需要找到数组1中包含数组2的元素即可,在一定程度上,数组1是可能包含数组2的。

但是在数组1不全部包含数组2的时候,只需要找到最好连续包含的元素即可。

那么代码要如何写呢,其实有这么几种方法是可以使用的。

比如移动的指针、遍历获取值,然后通过流去拿出结果值等等。

下面来看一下具体的代码展示吧。

代码展示

本次执行的代码如下,大家可以自行参考一下。

public class Solution {
    public static void main(String[] args) {
        Solution solution = new Solution();
        System.out.println(Arrays.toString(solution.intersection(new int[]{1,2,2,1}, new int[]{2,2})));
    }
    public int[] intersection(int[] nums1, int[] nums2) {
        List<Integer> resultList = new ArrayList<>();
        Set<Integer> set = new HashSet<>();
        for (int i : nums1) {
            set.add(i);
        }
        for (int i : nums2) {
            if (set.contains(i)) {
                set.remove(i);
                resultList.add(i);
            }
        }
        return resultList.stream().mapToInt(Integer::intValue).toArray();
    }
}

代码执行结果

代码执行实在是一个字,惨。

没想到这么差劲,估计是使用了steam流的关系。image.png我看到有些大佬使用两行代码就解决了这个问题,就是使用的Stream流的方式。

有兴趣的话,大家可以去试一下。

总结

今天的这道题主要是针对多个数组之间的处理,如果追求性能的话,可以使用双指针的方式去处理,效果会好很多。

目录
相关文章
|
机器学习/深度学习 人工智能 自然语言处理
黑箱优化:大规模语言模型的一种落地方式
黑箱优化:大规模语言模型的一种落地方式
255 0
|
10月前
|
存储 消息中间件 OLAP
Hologres+Flink企业级实时数仓核心能力介绍-2024实时数仓Hologres线上公开课03
本次分享由阿里云产品经理骆撷冬(观秋)主讲,主题为“Hologres+Flink企业级实时数仓核心能力”,是2024实时数仓Hologres线上公开课的第三期。课程详细介绍了Hologres与Flink结合搭建的企业级实时数仓的核心能力,包括解决实时数仓分层问题、基于Flink Catalog的Streaming Warehouse实践,并通过典型客户案例展示了其应用效果。
309 10
Hologres+Flink企业级实时数仓核心能力介绍-2024实时数仓Hologres线上公开课03
|
小程序 前端开发
保健品商城小程序模板源码
保健品商城小程序模板源码
1026 3
|
Linux 数据安全/隐私保护 Docker
优化Docker权限管理:配置Docker用户组
Docker 利用 Linux 的用户和组权限来管理对 Docker 守护进程的访问权限。一般情况下,只有 root 用户和属于 docker 用户组的用户才被允许访问 Docker 守护进程。在 Linux 系统上使用 Docker 时,如果您尚未配置 docker 用户组,那么作为非 root 用户执行 Docker 相关命令将要求使用 sudo 来提升权限。
1581 2
优化Docker权限管理:配置Docker用户组
|
传感器 监控 搜索推荐
智能纺织品:可穿戴科技的新潮流
【9月更文挑战第22天】智能纺织品作为可穿戴科技的新潮流,正以其独特的魅力和卓越的性能,引领着纺织行业的创新发展。随着技术的不断进步和应用领域的不断拓展,智能纺织品将在更多领域得到应用和推广,为人们的生活带来更多便利与可能性。我们有理由相信,在不久的将来,智能纺织品将成为人们生活中不可或缺的一部分,共同推动社会的可持续发展与繁荣。
|
安全 Android开发 数据安全/隐私保护
探索Android应用开发的新趋势
随着技术的不断进步,Android应用开发领域也在经历着翻天覆地的变化。从Kotlin的崛起到Flutter的流行,再到Jetpack Compose的创新,开发者们正面临着前所未有的机遇和挑战。本文将深入探讨这些新兴技术如何影响当前的开发实践,并预测它们将如何塑造未来的移动应用开发。 【7月更文挑战第26天】
221 3
|
存储 Kubernetes 应用服务中间件
Kubernetes Pod
Kubernetes Pod
450 0
Kubernetes Pod
|
存储 关系型数据库 MySQL
败给“MySQL”的33天,我重振旗鼓,四面拿下阿里淘系offer
自己投了几家头部互联网公司,阿里是其中之一,也是我的期望公司。既然目标定下来了,自然是要竭尽全力去实现的,年前面试了阿里一波,但最终是败给了MySQL,好几个问题都答得不太理想,所以结果也想象得到,挂得很快。但今年由于疫情的缘故,各大互联网公司也受到了一些阻力,不过也趁着这空闲之际,我重整旗鼓,在败给“MySQL”的第33天,四面拿下了阿里淘系offer!
|
JSON JavaScript 前端开发
js如何解决跨域问题?
js如何解决跨域问题?
367 0
|
前端开发
前端学习笔记202306学习笔记第五十一天-发布订阅者模式5
前端学习笔记202306学习笔记第五十一天-发布订阅者模式5
97 0