国产探花免费观看_亚洲丰满少妇自慰呻吟_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;                 }


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东乡县| 镇巴县| 年辖:市辖区| 南靖县| 莱西市| 修武县| 繁昌县| 盘锦市| 湖北省| 朝阳区| 外汇| 南阳市| 贵定县| 松原市| 双城市| 嘉鱼县| 信宜市| 西畴县| 临桂县| 建湖县| 抚松县| 吐鲁番市| 昌黎县| 水富县| 响水县| 台前县| 孟村| 金乡县| 崇文区| 同仁县| 皮山县| 凌源市| 西乡县| 陆河县| 海安县| 吴桥县| 巴林右旗| 甘孜县| 伊宁县| 当涂县| 沂水县|