算法训练DAY06
算法训练DAY06| 哈希表理论基础 242.有效的字母异位词 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和
242.有效的字母异位词
大体思路:
- 创建长度为26的hash_table
- 遍历两个字符串
- 比较是否相同
实现细节:
- python不支持字符之间做减法 也不支持将字符强制转换为int
- ord()函数可以返回对应的ASCII数值,与chr()函数配套
- from collections import Counter
- from collections import defaultdict
349. 两个数组的交集
大体思路:
-
使用python中的字典存储哈希
-
对于值的范围很大的时候,值的数量很少,用数组显然就不合适了
实现细节:
- hash_dict={} 创建字典
- hash_dict[num]=1 生成键值对
- if num in hash_dict.keys() and hash_dict[num]==1: and运算先判断前面的,防止直接访问不存在的键
202. 快乐数
大体思路:
- 关键要读懂题目,题目说了这个数在判断过程中,只有两种可能,要么是变成1,要么就是无限循环
- 模拟过程,用hash_table存储中间结果,如果结果出现了,直接return false否则一直执行下去
实现细节:
- int()是直接把字符串的数字转成数字 字符串的10,str()也是直接转
1. 两数之和
大体思路:
- 暴力,没明白为什么要用到hash
实现细节:
- for index, value in enumerate(nums): 遍历数组的新写法
- 每次拿出元素后在dict内寻找另一个对应的数是否存在
总结
用时1.5h,感觉还是用不太习惯哈希,遇到提没有那种意识,语法含不够熟练

浙公网安备 33010602011771号