zoukankan      html  css  js  c++  java
  • 求两个集合的交集

      传统的通过两次循环讲相同的元素去除的时间复杂度为 O(M*N)

      利用hash这种很有用的数据结构来实现。我们知道,hash的特点之一就是不允许有重复元素,即hash表中的元素都是唯一的。所以,我们的思路就是:先把第一个集合的所有元素都放进hashSet中,时间复杂度O(M);再把第二个集合中的元素放进hashSet中,如果有重复元素,就是这2个集合的交集,时间复杂度为O(N)。即总的时间复杂度从O(M*N)降低到了O(M+N)

    public static List<string> GetIntersection2(List<string> list1, List<string> list2)
    {
        //第二种方法:hash
        List<string> list3 = new List<string>();
    
        HashSet<string> hashSet = new HashSet<string>();
    
        foreach (string item in list1)
        {
            hashSet.Add(item);
        }
    
        foreach (string item in list2)
        {
            if (hashSet.Add(item) == false)
            {
                list3.Add(item);
            }
        }
    
        return list3;
    }
  • 相关阅读:
    codeforces round#600
    第三章:数据操作
    1143 Lowest Common Ancestor (30 分)
    游标
    1151 LCA in a Binary Tree (30 分)
    jQuery之setInterval()定时器
    C程序第四次作业
    C程序第三次作业
    C程序第二次作业
    C程序第一次作业
  • 原文地址:https://www.cnblogs.com/a164266729/p/5109570.html
Copyright © 2011-2022 走看看