美文网首页
两个排序数组的交集

两个排序数组的交集

作者: sl泡泡龙 | 来源:发表于2017-02-24 16:03 被阅读29次

如 a[M] b[N]

  1. 最傻瓜式
    每一次从b数组中取一值,然后在a数组里逐个比较是否相等,该算法复杂度为 O(MN)

  2. 二分查找
    从一个数组中取出值后再另一个数组中用二分查找法找是否有相等的,算法复杂度为O(M * lgN)或 O(N * lgM)

  3. 用hashtable
    先把a中的值存在hashtable里,然后对于每一个b中的值,判断是否在a中存在,因为hashtable查找的平均复杂度为 O(1), 所以,整个算法复杂度为O(N), 但是,这里的空间复杂度为 O(M) 。但是,这种方法适合数组比较小的情况。因为如果a数组比较大,hashtable会出现collision的情况,这样,查找的平均复杂度就不再是 O(1)。

  4. 算法复杂度O(M + N)

void arrayJiao(int ar[], int a_len, int br[], int b_len, int tmp[])  
{  
    int i = 0, j = 0, k = 0;  
    while(i < a_len && j < b_len)  
    {  
        if(ar[i] < br[j])  
            i++;  
        if(ar[i] > br[j])  
            j++;  
        if(ar[i] == br[j])  
        {  
            tmp[k++] = ar[i];  
            i++;  
            j++;  
        }  
    }  
  
    for(i = 0; i < k; ++i)  
    {  
        cout<<tmp[i]<<" ";  
    }  
    cout<<endl;  
}  

相关文章

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

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

  • 算法练习100天-第3天

    类别:数组 题目: 349. 两个数组的交集 我的解题思路: 官方解题思路: 差异点 没有想到将数组排序,排序后的...

  • 3 ARTS打卡第三周(2019-08-19)

    Algorithm 本周LeetCode 题目:350. 两个数组的交集 II题解思路:首先,将两个数组进行排序。...

  • leetcode探索初级算法之数组

    推荐:只出现一次的数字,旋转数组,两个数组的交集 II 和 两数之和。 1. 删除排序数组中的重复项 给定一个排序...

  • Leetcode.350.Intersection of Two

    题目 给定两个数组,求数组的交集。 思路 先排序,对小的数组下手,通过双指针进行比较。 总结 注意边界条件,双指针...

  • 两个排序数组的交集

    如 a[M] b[N] 最傻瓜式每一次从b数组中取一值,然后在a数组里逐个比较是否相等,该算法复杂度为 O(MN...

  • LeetCode 刷题总结(5)

    350. 两个数组的交集 II 思路 两个map分别统计在两个数组中一个元素的出现次数 把其中一个数组排序去重,然...

  • 【北京第十九天】

    2016.06.24 周五 算法题:求两个数组的交集,整理了五种思路。重新接触了堆排序,spring,beans,...

  • 滴滴面试题

    1、快速排序和二分排序选一个手写。 2、手写一个 eventEmitter。 3、手写两个数组的交集。 两层 fo...

  • leecode刷题(6)-- 两个数组的交集II

    leecode刷题(6)-- 两个数组的交集II 两个数组的交集II 描述: 给定两个数组,编写一个函数来计算它们...

网友评论

      本文标题:两个排序数组的交集

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