算法训练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,感觉还是用不太习惯哈希,遇到提没有那种意识,语法含不够熟练

posted @ 2023-05-16 15:58  秋山深一  阅读(7)  评论(0)    收藏  举报