242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和

1.哈希表理论基础:

遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法

 什么时候使用哈希法,当我们需要查询一个元素是否出现过,或者一个元素是否在集合里的时候,就要第一时间想到哈希法

242.有效的字母异位词 

1.自己思路

遍历字符串 查询到一个字母就放入对应的map中 map的key根据26个英文字母来判断

但是如何比较 两个map是否相同就很麻烦

2.题解思路:只使用一个数组来记录 A字符串++ B字符串-- ps:注意string的一些基础函数使用.size() string[i-'a'](asciaII码转换)

349. 两个数组的交集

1.自己思路:

unordered_map 下标是对应的数字 key为数字 value为次数  一个++ 一个-- 通过率 0 QAQ

2.题解思路:

注意返回:返回不重复 不讲究顺序 重点在于返回不重复

因为需要自动去重 所以选择unordered_set这种数据结构(底层实现哈希表 数值不重复)

然后第一个数组来存入unordered_set 第二个数组来遍历find

int num : num2 num2为vector 遍历操作类似auto

202. 快乐数

1.自己思路:

首先得知道怎么计算每次数的各个位置平方之和(核心点:while(n) n/10)

其次可以理解成递归思想 每次得出的值存放在unordered_set中 发现是否有重复有则不是欢乐树

pass

2.题解思路类似

1. 两数之和

1.自己思路:

因为题目说可以假设只有一组答案 所以两层for循环遍历 会出现 i j j i 这种重复情况 所以存放ret的数据类型为数据值不可重复的unordered_set

同时注意排除 ii  jj这种情况 通过

2.题解思路:

这里可以只使用一层for循环 因为是两值相加 所以每次去ret中是否有当前target-当前值的值 有的花即可输出 没有 则记录该值 因为需要输出下标 所以需要不仅知道数值 还得知道数值的下标 所以选择使用map key存数值 value存下标

注意 思路转换成代码时

1.auto遍历器的使用 map.find的返回值是auto类型 auto->first指向key auto->second指向value

2.pair<int,int>(i,j) 把i j绑定成key value 然后才可以map.insert

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值