代码随想录算法训练5day| 哈希表理论基础 、 242.有效的字母异位词、349. 两个数组的交集 、202. 快乐数、1. 两数之和 。

题目及解答来源

242. 有效的字母异位词

349. 两个数组的交集

202. 快乐数

1. 两数之和

代码随想录

这里主要对哈希表和有效字母异位词做出自己的理解!

哈希表

通常来说哈希表也称为散列表,这官方介绍部分可以去网上查一查,我把它简单理解为一个数组,哈希表的关键码就是数组的索引下标,通过下标去访问数组中的元素

主要解决的问题

       快速判断一个元素是否出现集合里

不足之处

        对于需要检索的值比较多,就不再适合了,需要用到set和map.

哈希函数

通常是将值通过hashcode才用特定编码转化为数值,然后在哈希表上进行索引,另外需要注意的是hashcode的值一定要小于tablesize,否则会产生哈希碰撞。

哈希碰撞

两个或者多个值在有一个索引下标中就会产生,解决方法有拉链法和线性探测法

有效字母异位词

目的:就是判断给定两个字符中的字符是否完全一致(此处我们考虑的是全是小写字母)

思路

        1、先定义一个哈希数组a[26],初始值都是0,将a~z的字母位置都对应下标0到25,通过遍历的方式,对第一个字符串去统计出现字母的次数,出现后就累加

        2、再对第二个字符串进行如上减减的操作,只要出现字母就在原有数组的条件下 ,对相应的值进行减1

        3、最后再遍历,判定数组是否有非零值,若有则说明不是字母异位词,反之则是

遇到的问题

       1、 这会涉及到一个什么时候加1的条件,即当数组中字母减‘a'为真就实行加1,在第二次遍历则实行减1

       2、对题的概念理解还没有完全掌握,后面还得多练习几遍

       3、解决哈希碰撞的方法没有看懂,查资料补上

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值