代码随想录算法训练营第六天 |242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和

本文讨论了如何使用hashtable和unordered_set等数据结构解决字符串异位词判断、数组交集、快乐数和两数之和等问题,强调了哈希表在优化算法效率中的关键作用。

242.有效的字母异位词

数组也是一种hash table ,你只需知道下标就可以轻松找到你想要的。一个字符串负责增加,另一个字符串负责抵消,如果最后数组全为零就是字母异位词。

还有一个关键点是 用字符-‘a’,这个相对量作为下标。

349. 两个数组的交集

同样的因为涉及到要在一个系列里找有没有对应的元素,所以使用hash table

这一题主要是利用 unordered_set的特性,他会自动去重。

不过在这题的示例代码中,学到了一些技术上的技巧。

unordered_set<int> nums_set(nums1.begin(), nums1.end());//使用构造函数初始化了set

 for(int num:nums2){}//简易得写for循环

vector(res.begin(),res.end());//直接用unordered_set变成vector

202. 快乐数

这个题目比较简单,核心是要检查之前的平方和中是否出现过当前的平方和,很自然的使用hash的方式。

1. 两数之和

这个题目第一次写的时候,也是双for循环写的,耗时很长。在听到去hash表里找你想要的元素的时候,我真的被这个想法惊到了,这里的核心是,target不是一个摆在那里供你去比对的答案,他也是操作的一部分。用target去减去当前的值,得到差,再去hash表里找有没有这个差出现过。只需要一次循环,同时,因为hash table里需要保留值和下标,所以使用map。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值