美文网首页
求两个数组交集

求两个数组交集

作者: 小杰66 | 来源:发表于2021-04-14 08:06 被阅读0次

我的第一反应解法是这样的:
const fun = ((arr1, arr2) => arr1.filter((i) => arr2.includes(i)));
但是当两个数组中存在大量相同元素的时候是有问题的。
例如fun([1,1],[1])会得到[1,1]

  1. 空间换时间,借助hash实现,时间复杂度为O(m+n)
const join = (arr1, arr2) => {
  const hash = {};
  const result = [];
  arr1.forEach((n) => {
    hash[n] = (hash[n] || 0) + 1;
  });
  arr2.forEach((n) => {
    if (hash[n] > 0) {
      result.push(n);
      hash[n]--;
    }
  });
  return result;
};
  1. 不使用额外空间,遍历数组1的元素,当在数组2中找到时就从数组2中删除该元素并继续遍历数组1的下一个元素,时间复杂度为 O(m*n)
const join = (arr1, arr2) => {
  const result = [];
  for (let i = 0; i < arr1.length; i++) {
    for (let j = 0; j < arr2.length; j++) {
      if (arr1[i] === arr2[j]) {
        result.push(arr2[j]);
        arr2.splice(j, 1);
        break;
      }
    }
  }
  return result;
};

相关文章

  • Javascript Array

    数组常用方法 面试题 求两个数组的交集和差集 交集 差集

  • 2021-03-05富途社区C/C++后台一面

    两个有序数组求交集 两个数组A和B,A数组超大,内存装不下,求数组A和数组B的交集 字符串删空格 单向链表,给定链...

  • 随手写

    求两个递增数组的交集元素 小马过河 斗牛

  • 二分查找

    求整数根号Implement int sqrt(int x) 求两个数组交集Intersection of Two...

  • 求两个数组交集

    我的第一反应解法是这样的:const fun = ((arr1, arr2) => arr1.filter((i)...

  • 求两个数组的交集

    问题: 给你两个数组,求两个数组的交集。比如: A = [1, 4, 7, 3, 5] , B = [2, 9, ...

  • 每日一道算法题 - 求两个数组交集

    问题 给定两个数组,求两个数组的交集,并以数组形式输出。 思路 1)先排序再比较:先对两个数组进行排序,遍历两个数...

  • 求两个数组的交集

    求两个数组的交集,有很多解法,比如最暴力的 for循环嵌套,接下来要实现的一种是利用 hash 的方式。这里不使用...

  • 求两个数组的交集

  • 阿里面试 Coding 测试回顾

    1. 数组交集求解 求两个无序数组的交集,例如a={1,5,2,4,2}, b={2,7,2,8},结束为{2,2...

网友评论

      本文标题:求两个数组交集

      本文链接:https://www.haomeiwen.com/subject/cmxhlltx.html