刷题第四天
202. 快乐数:
一开始没看到无限循环四个加粗的大字,一直在疑惑这题目怎么能做出来,后面被朋友提醒才反应过来。😣
既然是无限循环那只要遇到相同的数字,就说明遇到了环,说明可以停下来了。使用一个unordered_set记录一下数字就好啦。每次count一下数字是否在set里。

1. 两数之和:
一开始使用的是一个数组存储nums里的数据,因为答案唯一,所以数据不可能重复,即使重复也只能说明target是这两个数之和,因此使用数组cnt下标作为nums的数据,对应的值为数据的下标,cnt一开始全部初始化为-1,因为nums从0开始的。开开心心提交之后,才发现nums有负数。于是改用map<int,int>,但这里又出现了问题,好像不能统一给map赋初始值-1。于是,我只能在nums前面插入一个数,结果再全部减一。(我看了题解可以直接count一下,还是对map不熟悉啊~😶记住了!)

454. 四数相加 II:
这题一开始受上题影响,以为要输出结果的下标,还特地去了解了一下turple,结果了解了一半的时候,回过头来看了一眼题目,发现只需要输出几种结果(晕,以后一定好好看题目)。这样的话事情就好办了。先算出nums1、2、 3的三数相加的总和,map<int,int>第一个int存总和,第二个int存总和的次数,最后和4比较。提交结果发现超时了。
重新思考了一下,后面发现可以1、2相加和3、4比较。后面就过了。

383. 赎金信:
使用unordered_map<char,int>存magazine各个字母的个数。再遍历ransomNote,如果map中的字母少于ransomNote需要的,就返回false。