-
LeetCode 454.四数相加II
首先定义 一个unordered_map,key放a和b两数之和,value 放a和b两数之和出现的次数。遍历两个数组,统计两个数组元素之和,和出现的次数,放到map中。定义int变量count,用来统计 a+b+c+d = 0 出现的次数。在遍历剩余两个数组,找到如果 0-(c+d) 在map中出现过的话,就用count把map中key对应的value也就是出现次数统计出来。最后返回统计值 count 就可以了。
因为题目说只有小写字母,那可以采用空间换取时间的哈希策略,用一个长度为26的数组来记录magazine里字母出现的次数。然后再用ransomNote去验证这个数组是否包含了ransomNote所需要的所有字母。依然是数组在哈希法中的应用。
通过两层for循环确定 a 和b 的数值,使用哈希法来确定 0-(a+b) 是否在 数组里出现过。
-
LeetCode 18. 四数之和
四数之和,和三数之和是一个思路,都是使用双指针法, 解法就是在三数之和的基础上再套一层for循环。代码如下: