首页 > 其他分享 >leetcode349-两个数组的交集

leetcode349-两个数组的交集

时间:2025-01-20 15:30:07浏览次数:3  
标签:leetcode349 const set2 交集 item 数组 nums1 nums2

leetcode 349
在这里插入图片描述

实现

利用哈希set进行去重,然后循环nums2,如果nums2中的元素是在去重后的num1中出现过的,就存放在set2中,因为最后要返回的是不重复的数组,所以先放在set2,让其进行去重,最后把set2转为数组

方法1
var intersection = function (nums1, nums2) {
   const set1 = [...new Set(nums1)]
   return set1.filter(item=>nums2.includes(item))
};
方法2
var intersection = function (nums1, nums2) {
  const set1 = new Set(nums1);
  const set2 = new Set();
  nums2.forEach(item=>{
    if(set1.has(item)){
        // 交集
        set2.add(item)
    }
  })
  return [...set2]
};
方法3 哈希数组

由于题目中有写到数组长度是<=1000的,那么我们初始的时候设置数组长度为1001,然后每一个值就是对应数组的索引index,先循环nums1,给对应的索引设置value为1,然后遍历nums2,如果nums2中对应的value值存在,说明是之前在nums1中有设置值,所以这个数是交集

var intersection = function (nums1, nums2) {
  const result = new Set();
  // 题目中有写到数组的长度是<=1000的
  const hashArr = new Array(1001)
  nums1.forEach(item=>{
    hashArr[item] = 1;
  })
  nums2.forEach(item=>{
    if(hashArr[item]){
        result.add(item)
    }
  })
  return [...result];
};

标签:leetcode349,const,set2,交集,item,数组,nums1,nums2
From: https://blog.csdn.net/weixin_45799371/article/details/145263120

相关文章

  • PTA 之 数组元素循环右移问题
    一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0​A1​⋯AN−1​)变换为(AN−M​⋯AN−1​A0​A1​⋯AN−M−1​)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?输入格式:......
  • 写一个方法,传入数字x,从一个一维数组里找到两个数字符合“n1 + n2 = x”
    在前端开发中,你可以使用JavaScript来编写这个方法。下面是一个简单的实现,它接受一个数字x和一个一维数组arr作为参数,并尝试在数组中找到两个数字,使它们的和等于x。如果找到了这样的两个数字,它会返回一个包含这两个数字的数组;如果没有找到,它会返回null。functionfindTwoNumbersTh......
  • 树状数组板子(单点增加+范围查询)
    用于解决范围数字和与单点增加问题(复杂度O(logn))build方法(构造树状数组)voidbuild(){ for(inti=1,v;i<=n;i++){ cin>>v; add(i,v); }}lowbit方法(获取一个二进制数最低位的1的状态)intlowbit(intx){ returnx&(-x);}add方法(单点增加)voidadd(inti,int......
  • 全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之一维数组(应用技巧)
    二、一维数组应用技巧2:打标记实战训练1—开关灯问题描述:有M个从1到M依次编号的人参加一项游戏。将K盏从1到K依次编号的灯(K和M均为正整数,M≤K≤5000)进行一系列的熄灭与打开的操作,游戏开始时均处于亮灯的状态;第一个人(1号)将灯全部熄灭;第二个人(2号)将编号为2的倍数的灯做......
  • 算法随笔_12:最短无序子数组
    上一篇: 算法随笔_11:字符串的排列-CSDN博客题目描述如下:给你一个整数数组nums,你需要找出一个连续子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。请你找出符合题意的最短子数组,并输出它的长度。示例1:输入:nums=[2,6,4,8,10,9,15]输出:5解释:......
  • 代码随想录:将有序数组转化为二叉搜索树
    /***Definitionforabinarytreenode.*structTreeNode{*intval;*TreeNode*left;*TreeNode*right;*TreeNode():val(0),left(nullptr),right(nullptr){}*TreeNode(intx):val(x),left(nullptr),right(nullptr){}*......
  • 指针应用-查找数组元素(PTA)C语言
    编写一个名为findX的函数,该函数的参数p指向一个int数组,数组的容量n由参数2指定。在该数组中,查找数据x所在的位置。如果数据x有出现多次,则返回其最后一次出现的位置对应的下标。如果没有找到,则固定返回-2。intfindX(int*p,intn,intx);函数接口定义:intfindX(int*p,intn......
  • 【华为OD-E卷 - 找出两个整数数组中同时出现的整数 100分(python、java、c++、js、c)】
    【华为OD-E卷-找出两个整数数组中同时出现的整数100分(python、java、c++、js、c)】题目现有两个整数数组,需要你找出两个数组中同时出现的整数,并按照如下要求输出:有同时出现的整数时,先按照同时出现次数(整数在两个数组中都出现并目出现次数较少的那个)进行归类,然后按照出......
  • PTA:一维数组 简化的插入排序
    本题要求编写程序,将一个给定的整数插到原本有序的整数序列中,使结果序列仍然有序。输入格式:输入在第一行先给出非负整数N(<10);第二行给出N个从小到大排好顺序的整数;第三行给出一个整数X。输出格式:在一行内输出将X插入后仍然从小到大有序的整数序列,每个数字后面有一个空格。输......
  • 动态规划(dp数组)
    动态规划,是利用历史记录来避免重复计算的一种算法,是求解决策过程最优化的过程。一般用一维数组/二维数组来保存历史记录。(将原问题拆解成若干子问题,同时保存子问题的答案,使每个子问题只求解一次,最终获得原问题的答案。)一般动态规划有三个步骤:1.定义数组元素的含义,一般求什么就......