代码随想录集训营系列——day06
1. 哈希表
哈希表通过哈希函数使得关键字与数值之间产生映射关系。
最简单的哈希表就是数组,关键字是index(索引),数值为数组在此索引内的值。这种方法优点是编码十分的简单,但是占用空间大,空间利用率低。而且当多个数值需要映射到同一个关键字时会产生冲突,例如在离散数学中关于0-100内%3的整数集。由此需要有解决冲突的方法:开放定址法、拉链法。
2. 有效的字母异位词 242
输入:字符串A,字符串B
输出:是否A中的每个字符在B中都出现了相同次数
解题目思想:遍历A建立一个map<字符,出现次数>,关键字为A中出现的字符进行累加操作;遍历B将关键字为B中出现的字符进行累减操作。最终遍历map若其中有不为0的数值则不满足条件。
时空复杂度:O(n)
3. 两个数组的交集 349
输入:数组A,B
输出:数组C(是AB的交集)
解题思想:使用set之关注元素是否存在过而不用在意个数,将A中出现过的元素插入set,遍历B若B中的元素在set中存在则加入数组C
时空复杂度:O(n)
4. 快乐数 202
快乐数一点都不快乐。
「快乐数」 定义为:
对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
如果这个过程 结果为 1,那么这个数就是快乐数。
无线循环在本题中一定会产生结果的冗余。
5. 两数之和
输入:一组数组
输出:一对索引对
解题思路:在遍历数组的过程中将无法匹配的元素封装入map<元素值,索引>中,若在数组遍历完成之前出现了匹对成功的元素,将其索引对返回。