国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

數據結構實例<五>(Intersection)容易

2019-11-08 02:04:34
字體:
來源:轉載
供稿:網友

題目:

計算兩個數組的交集:   

C#自帶Function:

Intersect()交集    Except()差集   Union()并集。
本文考察算法哈:
自帶的Buff咱不考慮。
1.遍歷輸出,兩次for循環。O(n^2).最簡單,時間復雜度太大
2.先排序,再利用下標循環。O(nlogn).
3.同時遍歷兩個數組,放入一個新的容器。把重復的提出來即可。
4.在3的基礎上我們可以引申出利用一些特殊集合更完美實現。HASH以及Dictionary。
*先把一個數組全部放進一個容器中,注意:Key不能重復(唯一),否則拋異常。
*我們也恰恰利用這個特性:哈希碰撞/字典碰撞 查重。
*當然我們也可以利用這些容器的Contains()查重,效率也很快。
 
感覺自己屌屌的有木有:
 public static List<int> Intersection(int[] nums1, int[] nums2)        {            var dicIntersect = new Dictionary<int, int>();            var intersectData = new List<int>();            // Traverse the first array.            foreach (int data in nums1)            {                if (!dicIntersect.Keys.Contains(data))                {                    dicIntersect.Add(data, 0);                }                dicIntersect[data]++;            }            // Traverse the second array.              foreach (int data in nums2)            {                /* Repeat the matched elements */                if (dicIntersect.Keys.Contains(data))                {                    intersectData.Add(data);                }                /* dictionary collision */                try                {                    dicIntersect.Add(data,data);                }                //An item with the same key has already been added.                    //發生字典碰撞捕獲異常:說明重復Key出現,加入到List即為重復數據                catch (Exception ex)                {                    intersectData.Add(data);                }                dicIntersect[data]++;            }             return intersectData;                 }


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宁国市| 汉川市| 兴海县| 开远市| 镇安县| 樟树市| 马山县| 梁河县| 扶绥县| 泰安市| 民乐县| 舒兰市| 乌拉特前旗| 无锡市| 桐城市| 巫溪县| 梁河县| 常州市| 青州市| 揭西县| 柳林县| 濮阳市| 遂平县| 彩票| 万荣县| 巨鹿县| 平舆县| 沅江市| 丁青县| 武隆县| 荔浦县| 金华市| 渭源县| 贵港市| 营山县| 崇左市| 木兰县| 阳城县| 房产| 台南县| 新野县|