首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

查找不允许重复的两个数组的交集

可以通过以下步骤实现:

  1. 首先,创建两个数组,分别为数组A和数组B。
  2. 确保数组A和数组B中的元素没有重复。
  3. 创建一个空的结果数组,用于存储交集元素。
  4. 遍历数组A中的每个元素,判断该元素是否也存在于数组B中。
  5. 如果存在,则将该元素添加到结果数组中,并从数组B中删除该元素,以避免重复计算。
  6. 最后,返回结果数组作为两个数组的交集。

以下是一个示例代码,使用JavaScript语言实现上述步骤:

代码语言:txt
复制
function findIntersection(arr1, arr2) {
  // 创建结果数组
  let intersection = [];

  // 遍历数组arr1
  for (let i = 0; i < arr1.length; i++) {
    let current = arr1[i];

    // 判断当前元素是否存在于arr2中
    if (arr2.includes(current)) {
      // 将当前元素添加到结果数组中
      intersection.push(current);

      // 从arr2中删除当前元素
      arr2.splice(arr2.indexOf(current), 1);
    }
  }

  return intersection;
}

// 示例用法
let array1 = [1, 2, 3, 4, 5];
let array2 = [4, 5, 6, 7, 8];
let result = findIntersection(array1, array2);
console.log(result); // 输出 [4, 5]

这个算法的时间复杂度为O(n^2),其中n是两个数组中元素的总数。如果数组已经排序,可以使用双指针法来优化算法,将时间复杂度降低到O(n)。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

两个数组交集

本文链接:https://blog.csdn.net/weixin_43908900/article/details/102591900 题目:给定两个数组,编写一个函数来计算它们交集。...我们可以不考虑输出结果顺序。 首先说一下我自己(菜鸡)思路:我先是想先去重第第一个数组(nums1),然后循环判断值是否在nums2中,有的话,添加新列表中。...O(n)O(n) 时间用于转换 nums1 在集合中,O(m)O(m) 时间用于转换 nums2 到集合中,并且平均情况下,集合操作为 O(1)O(1)) 空间复杂度:O(m+n)O(m+n),最坏情况是数组所有元素都不同...对于无所不能python 来说,内置了交集方法,看看下面的操作例3: class Solution: def intersection(self, nums1, nums2):...空间复杂度:最坏情况是 O(m+n)O(m+n),当数组元素全部不一样时。 只能说还是太菜。。。。。。。。

1.6K00
  • 两个数组交集

    两个数组交集 给定两个数组,编写一个函数来计算它们交集。...,计算两个数组交集最简单方式就是遍历数组nums1,对于其中每个元素,遍历数组nums2判断该元素是否在数组nums2中,如果存在,则将该元素添加到返回值,这样方式时间复杂度是O(mn),在这里使用排序加双指针方式...,首先对于两个数组分别进行排序,之后分别对于两个数组设立指针进行遍历,对比两个指针所指向元素,较小指针后移,如果相等则判断是否已经在目标数组中,不在则将其推入数组,之后同时将两个指针后移,最终返回目标数组即可...首先将两个数组分别从小到大进行排序,之后定义目标数组target,以及两个指针i、k与两个数组长度n1、n2,定义循环,在两个指针分别小于其指向目标数组长度下执行循环,如果i指针指向值小于k指针指向值...,不相等则将值推入数组,这样用来进行去重操作,之后将两个指针分别后移,循环结束后返回目标数组即可。

    1.3K30

    【Leetcode -349.两个数组交集 -350.两个数组交集Ⅱ】

    Leetcode -349.两个数组交集 题目:给定两个数组 nums1 和 nums2 ,返回 它们交集 。 输出结果中每个元素一定是 唯一 。我们可以 不考虑输出结果顺序 。...* intersection(int* nums1, int nums1Size, int* nums2, int nums2Size, int* returnSize) { //因为两个数组长度都是...len *returnSize = len; return p; } Leetcode - 350.两个数组交集Ⅱ 给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组交集...返回结果中每个元素出现次数,应与元素在两个数组中都出现次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果顺序。...数组数作为下标的hash数组位置数是否大于0 //大于0证明这个数也在nums1数组中出现过,将它放进p数组,并记录p数组长度k //随后将这个数作为下标的hash数组位置自减

    9210

    两个数组交集II

    JavaScript实现LeetCode第350题:两个数组交集II 题目描述 给定两个数组,编写一个函数来计算它们交集。...,应与元素在两个数组中出现次数一致。...O(n^2) 使用 Map 在 实现 349.两个数组交集[1],我们使用 Set来实现线性时间复杂度,在这里我们要使用 Map 来跟踪每个数字出现次数 现在 Map 中记录一个数组存在数字和对应次数...将两个数组进行排序,然后用双指针顺序查找相同元素 时间复杂度O(max(nlogn, mlogm, n+m)),空间复杂度O(1) (n,m分别为两个数组长度) 如果是进阶问题一中已排序数组,则只需...两个数组交集 II [2] 参考资料 [1]349.两个数组交集: https://leetcode-cn.com/problems/intersection-of-two-arrays/ [2]Leetcode350

    94340

    两个数组交集II

    两个数组交集II 给定两个数组,编写一个函数来计算它们交集。...,应与元素在两个数组中出现次数最小值一致。...,而Js中对象也是以HashTable进行存储,便可以直接利用Js对象来实现哈希表,请注意题目要求结果中每个元素出现次数应与元素在两个数组中出现次数最小值一致,根据这个要求那么需要在哈希表中记录值出现次数...,首先定义一个HashTable用以记录值出现次数,然后定义目标数组,接着将第一个数组nums1进行遍历,在哈希表中如果没有定义这个key,那么就将这个key值设置为1,如果已经定义了,那么就将其值自增...,然后遍历第二个数组nums2,直接判断在哈希表中是否定义该key,如果定义且其计数值大于0,那么就将哈希表中该key计数值自减,然后将该key推入数组,循环结束后返回目标数组即可。

    1.2K10

    java计算两个数组交集_回顾面试题:计算两个数组交集

    数组元素无序且有可能存在重复元素,请输出两个数组交集。原题大意是这样,细节可能有出入。  ...思路如下:  排序原数组  选择数组元素小数组去与大数组做比较  验证上面的指针比较法  比如有这样两个数组:  具体做法如下:  排序数组  初始化两数组指针,均从0开始  将小数组指针做为外层循环...同时将方法重复执行500次或者更多来测试。得到结论是排序之后指针方法要快于简单两层for,具体数据我就不贴了,因为与数组元素组成有一定关系。  ...继承了Collection接口,包含一个retainAll方法,我们利用Set可以非常轻松来完成两个数组交集。...,比较数组元素扩大到随机生成10000个int)  将原数组进行排序,然后将数组加入到队列中,拿元素个数较小做为循环条件,比较两个队列peek数值。

    1.3K20

    两个数组交集?如果两个数组是有序呢?

    第350题:给定两个数组,编写一个函数来计算它们交集。 ? 给定两个数组,编写一个函数来计算它们交集。...,应与元素在两个数组中出现次数一致。...我们可以不考虑输出结果顺序。 进阶: 如果给定数组已经排好序呢?你将如何优化你算法? 设定两个为0指针,比较两个指针元素是否相等。...首先拿到这道题,我们基本马上可以想到此题可以看成是一道传统映射题(map映射),为什么可以这样看呢,因为我们需找出两个数组交集元素,同时应与两个数组中出现次数一致。...两个排序好数组题,我们很容易可以想到通过双指针解法~ 设定两个为0指针,比较两个指针元素是否相等。如果指针元素相等,我们将两个指针一起向前移动,并且将相等元素放入空白数组。 ?

    1.4K40

    查找数组重复数字

    题目来源于《剑指Offer》中面试题3:找出数组重复数字。   // 题目:在一个长度为n数组所有数字都在0到n-1范围内。...数组中某些数字是重复,但不知道有几个数字重复了,   // 也不知道每个数字重复了几次。请找出数组中任意一个重复数字。...此处介绍自己一个做法,以空间换时间,通过新建数组来实现快速查找,具体做法是新建长度为length数组newArray,初始化值为-1;将numbers数组值依次作为newArray下标和对应值为...: (输出) 数组一个重复数字 // 返回值: // true - 输入有效,并且数组中存在重复数字 // false - 输入无效,或者数组中没有重复数字...,通过指针可以访问和修改指向对象,但是拷贝指针是两个不同指针 // // 建议使用引用类型形参替代指针 // if (numbers == nullptr || length <=

    4K60

    两个数组交集

    1 题目描述 两个数组交集 给定两个数组 nums1 和 nums2 ,返回 它们交集 。输出结果中每个元素一定是 唯一 。我们可以 不考虑输出结果顺序 。...3 题目提示 1 <= nums1.length, nums2.length <= 1000 0 <= nums1[i], nums2[i] <= 1000 4 思路 方法一:两个集合 计算两个数组交集...· 空间复杂度:O(m +n),其中 m和n分别是两个数组长度。空间复杂度主要取决于两个集合。 方法二:排序+双指针 如果两个数组是有序,则可以使用双指针方法得到两个数组交集。...首先对两个数组进行排序,然后使用两个指针遍历两个数组。可以预见是加入答案数组元素一定是递增,为了保证加入元素唯一性,我们需要额外记录变量pre表示上一次加入答案数组元素。...对两个数组排序时间复杂度分别是(m log m)和O(n log n),双指针寻找交集元素时间复杂度是O(m +n),因此总时间复杂度是O(m log m +n log n)。

    47220
    领券