代码随想录day07 四数相加II | 赎金信 | 三数之和 | 四数之和
四数相加II
解题思路
把大问题拆分成小问题,先把四个数组两两划分并遍历所有的可能,将其中两个数组的遍历结果存储在哈希表中,注意,该哈希表是通过值作为key,而该值的出现次数为value,随后遍历另外两个数组用哈希表来寻找解。
知识点
unorderd_map,哈希
心得
一道练习map数据结构的
【二刷】做题思路是,先计算得到所有前两个数组的和,并将和作为key,出现次数作为value存储在map中,之后再遍历剩余两个数组的和,并在map中寻找能够让和为0的key,并将这些key的value相加就是最后的技术次数
题目2
解题思路
用数组作为哈希表来映射26个英文字母,做法和day06的一题是非类似
知识点
数组,哈希表
心得
通过这道题目帮我复习了昨天做过的题目。
三数之和
解题思路
先将数组排列,然后通过双指针的方式遍历整个数组来得到最后的结果。和之前做的双指针类型的题目一样,我们通过目标值的大小和当前的和进行比较来移动双指针。注意,我们需要跳过数组中前后重复的数,否则最后会多存几次结果,就不符合要求了
知识点
双指针,排序,循环
心得
重新将数组进行大小排序是我开始做题时没有想到的,以后再做到类似的题目时,需要考虑这个情况。
三数之和
解题思路
先将数组排列,然后通过双指针的方式遍历整个数组来得到最后的结果。和之前做的双指针类型的题目一样,我们通过目标值的大小和当前的和进行比较来移动双指针。
知识点
双指针,排序,循环
心得
一开始想到双指针但不知道怎么具体实施,原来是需要先设置一个下标遍历整个数组,剩下两个下标作为双指针移动。
四数之和
解题思路
和三数之和的思路一样,需要多套一层循环来遍历。
知识点
双指针,排序,循环
心得
做完前一题再做这一题就很方便了