今天在leetcode上做题,相同的思路,用List<T>每次都超时,而HashSet<T>就可以成功
他俩的差距到底在哪里?
List<int> lst = new List<int>(); lst.Add(1); lst.Add(1); HashSet<int> hs = new HashSet<int>(); hs.Add(1); hs.Add(1); Console.WriteLine("lst:" + lst.Count + "\t hs:" + hs.Count);
HashSet<T> 集合会对加入的数据 distinct ,如果之前已经存在则就不会Add进去了。
都是查找,那么List<T> 没有过滤特性,那么查找的数据量就自然大。
看你怎么用。。
就是for循环把数组元素添加到list中,之后再判定list.Contains()
@Dranched: 保存数据,然后查找?
@吴瑞祥: 差不多吧
@Dranched: list就是个链表,查找只能遍历,hashset本来就是用来做查找的。。当然没有可比性。。。。。
线性结构和哈希结构,你说哪个查找效率更高?先熟悉基本数据结构再刷题。
HashSet=数组+链表,可以兼顾插入效率和随机访问