哈希
C#常用的数据结构:
[]Array,ArrayList 数组和动态数组
List
HashSet
HashTable 哈希表(obj,obj的键值对)
Dictionary<T,T> 泛型的哈希表
什么时候考虑Hash数据结构?
- 需要高效的判断一个值是否存在在一个容器中时。
- 容器不允许重复值(HashSet或哈希表的键值)
242有效的字母异位词,因为小写字母之间相对范围最大为26,可以将字符串转化成已知有26个索引或者键值的哈希表,因为索引为int且长度固定,所以可以直接用数组表示。之后则是遍历两个字符串对对应键值的value进行加减,若俩字符串为字母异位词,则所有值都应该为0.
349两个数组的交集,将两个数组变成无重复值的HashSet,在C#中有一个IntersetWith的函数可以直接求得交集,最后ToArray转换成数组就行了。
202快乐数,一个数不是快乐数的现象为,在变换的时候会产生循环,也就是有重复值。将每次得到的值存在哈希表或集合中,存入前判断一下是否存在,若存在就不是快乐数。
1两数之和,因为最后要求返回俩值得下标,所以需要键值对形式。将数组变成字典,键值为数组值,字典值为数组值的下标,这样就可以用来判断当前数组值得下标和当前循环下标是否相等,根据题目必须得不相等。
实习好累。
标签:202,下标,数组,异位,随想录,键值,哈希,两数 From: https://www.cnblogs.com/sakilohale/p/18216505