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

1.哈希表理论基础:代码随想录 (programmercarl.com)

        1.注意一般哈希表都是用来快速判断一个元素是否出现在集合里。

        2.一般来讲,若哈希值较少,用数组即可,若哈希值较大,则用set或者map。set数据结构和数组类似,但是里面的值不能重复。

2.有效字母异位词:代码随想录 (programmercarl.com)

        1.此题主要是学习哈希法的思想,利用数组完成哈希法。

        2.当用字母‘a’或‘b’等进行加减运算的时候,系统会默认为用字母的ascaII码来进行运算。

3.两个数组的交集:代码随想录 (programmercarl.com)​​​​​

        1.但是要注意,使用数组来做哈希的题目,是因为题目都限制了数值的大小。 而这道题目没有限制数值的大小,就无法使用数组来做哈希表了。而且如果哈希值比较少,特别分散、跨度非常大,使用数组就造成空间的极大浪费。

        2.set::find是C++ STL中的内置函数,该函数将迭代器返回到在集合容器中搜索的元素。如果找不到该元素,则迭代器将指向集合中最后一个元素之后的位置。

        3.用unordered_set先存放结果为了避免数值重复,之后再将其转为vector<int> 作为输出。

        4.直接用set计算的时间会很大,所以当能用数组的时候就用数组,不能用数组再用set,不要一上来就用set。

4.快乐数

 

        1.学会取数值各个位上的单数之和的操作。

        2.注意题目中已经说了的条件:要么无限循环,要么等于1,这符合哈希法,在一群数字中找出某数(找出重复出现的数)

        3.学习无限循环的操作:while(1){},直到找到最后的结果。

        4.一定记得最后无限循环中最后使n=sum的操作。

        5.在定义getsum的函数时,要记得把int sum定义在while循环外。

        刷题过程中出现的错误:5.

5.两数之和:有人相爱,有人夜里看海,有人力扣第一题都做不出来

 

        1.为什么要用哈希法?哈希法的用处就在于快速找到集合中是否有某一个值,而本题的思路就在于在遍历过的元素中找到是否有target-nums【i】的元素,符合这个规律。

        2.为什么是用map呢?因为我们既要存放数组中的元素的值,又要存放其索引,只有map符合。

        3.key和value分别储存啥:因为map的的find()算法是快速查找key的值,我们需要查找的就是元素值,所以key中存放元素值,value中存放其索引。

        4.{a,c}相当于vector<int>其中有这两个元素。

        5.map的insert类型只能为pair,不要忘记。

        本题刷题出现的错误:5.

今日总结:时间安排确实存在问题,每天早上起来都没有动力,早睡早起,保持充足精力。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值