前端算法-两个数组的交集

简介: 前端算法-两个数组的交集

题目

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

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

交集是指两个数组共同拥有的某个值,以上面的数组为例,nums1nums2这两个数组中都包含了4和9,所以4和9就是交集

题解

拿到这两个数组之后需要先对其进行去重,我们这里使用Set数据结构进行去重,我们声明set1变量和set2变量,然后我们使用new Set()将他们的值变成一个空的set数据结构,然后再声明一个res变量,这个变量是一个空数组,用于存放最终的交集数,然后我们使用循环进行循环nums1数组,每次循环我们使用set数据结构中的has方法去判断当前循环下nums1的值是否在set1中,如果不在则利用set数据结构中的add方法将当前nums1的值存储到set1中,即可完成去重,nums2也需进行这样的操作,不过nums2对应的变量是set 2,两个数组去玩重之后,我们在使用循环去循环set1变量,每次循环通过if判断结合set2.has方法,判断当前循环下set1的值是否在set2中,如果在set2中则通过push方法追加到res数组中,不在则不做任何操作进入下一轮循环,最后把res数组返回出去即可

 /**
 * @param {number[]} nums1
 * @param {number[]} nums2
 * @return {number[]}
 */
       var intersection = function (nums1, nums2) {
            let set1 = new Set();
            let set2 = new Set();
            let res = [];
            for (let j = 0; j < nums1.length; j++) {
                if (!set1.has(nums1[j])) {
                    set1.add(nums1[j]);
                }
            }
            for (let k = 0; k < nums2.length; k++) {
                if (!set2.has(nums2[k])) {
                    set2.add(nums2[k]);
                }
            }
            for (const i of set1) {
                if (set2.has(i)) {
                    res.push(i);
                }
            }
            return res;
        };

坚持努力,无惧未来!

相关文章
|
算法
Leetcode 初级算法 --- 数组篇
Leetcode 初级算法 --- 数组篇
112 0
|
7月前
|
存储 监控 算法
关于员工上网监控系统中 PHP 关联数组算法的学术解析
在当代企业管理中,员工上网监控系统是维护信息安全和提升工作效率的关键工具。PHP 中的关联数组凭借其灵活的键值对存储方式,在记录员工网络活动、管理访问规则及分析上网行为等方面发挥重要作用。通过关联数组,系统能高效记录每位员工的上网历史,设定网站访问权限,并统计不同类型的网站访问频率,帮助企业洞察员工上网模式,发现潜在问题并采取相应管理措施,从而保障信息安全和提高工作效率。
99 7
|
8月前
|
存储 人工智能 算法
C 408—《数据结构》算法题基础篇—数组(通俗易懂)
408考研——《数据结构》算法题基础篇之数组。(408算法题的入门)
306 23
|
10月前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
698 5
|
12月前
|
算法 程序员 索引
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
栈的基本概念、应用场景以及如何使用数组和单链表模拟栈,并展示了如何利用栈和中缀表达式实现一个综合计算器。
187 1
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
|
12月前
|
JavaScript 前端开发 算法
前端优化之超大数组更新:深入分析Vue/React/Svelte的更新渲染策略
本文对比了 Vue、React 和 Svelte 在数组渲染方面的实现方式和优缺点,探讨了它们与直接操作 DOM 的差异及 Web Components 的实现方式。Vue 通过响应式系统自动管理数据变化,React 利用虚拟 DOM 和 `diffing` 算法优化更新,Svelte 通过编译时优化提升性能。文章还介绍了数组更新的优化策略,如使用 `key`、分片渲染、虚拟滚动等,帮助开发者在处理大型数组时提升性能。总结指出,选择合适的框架应根据项目复杂度和性能需求来决定。
451 2
|
12月前
|
人工智能 前端开发 JavaScript
拿下奇怪的前端报错(一):报错信息是一个看不懂的数字数组Buffer(475) [Uint8Array],让AI大模型帮忙解析
本文介绍了前端开发中遇到的奇怪报错问题,特别是当错误信息不明确时的处理方法。作者分享了自己通过还原代码、试错等方式解决问题的经验,并以一个Vue3+TypeScript项目的构建失败为例,详细解析了如何从错误信息中定位问题,最终通过解读错误信息中的ASCII码找到了具体的错误文件。文章强调了基础知识的重要性,并鼓励读者遇到类似问题时不要慌张,耐心分析。
315 5
|
12月前
|
存储 算法 定位技术
数据结构与算法学习二、稀疏数组与队列,数组模拟队列,模拟环形队列
这篇文章主要介绍了稀疏数组和队列的概念、应用实例以及如何使用数组模拟队列和环形队列的实现方法。
135 0
数据结构与算法学习二、稀疏数组与队列,数组模拟队列,模拟环形队列
|
JSON 前端开发 数据格式
@RequestMapping运用举例(有源码) 前后端如何传递参数?后端如何接收前端传过来的参数,传递单个参数,多个参数,对象,数组/集合(有源码)
文章详细讲解了在SpringMVC中如何使用`@RequestMapping`进行路由映射,并介绍了前后端参数传递的多种方式,包括传递单个参数、多个参数、对象、数组、集合以及JSON数据,并且涵盖了参数重命名和从URL中获取参数的方法。
965 0
@RequestMapping运用举例(有源码) 前后端如何传递参数?后端如何接收前端传过来的参数,传递单个参数,多个参数,对象,数组/集合(有源码)
|
算法 前端开发
一文了解贪心算法和回溯算法在前端中的应用
该文章深入讲解了贪心算法与回溯算法的原理及其在前端开发中的具体应用,并通过分析LeetCode题目来展示这两种算法的解题思路与实现方法。

热门文章

最新文章