454
还是第一眼四层for,但学了hash表以后肯定不能当for哥了,首先数组不行,因为整数的范围太大,那么就考虑用map还是set,因为这题要返回等于零的数量,所以要用map,首先我们遍历A和B数组,将a+b的和出现的次数存入map,然后我们在遍历c和d数组,如果0-c-d在map中出现过,则取出value的值,最后用count来返回就可以了。
383
这个和字母异位词差不多,用数组,只不过这个是判断 第一个字符串 ransom 能不能由第二个字符串 magazines 里面的字符构成,我们可以遍历字符串1然后在数组中做一个字母出现次数的映射--,然后遍历字符串2,做++,最后遍历数组,如果值都大于等于零则返回true,否则返回false
15
刚开始做三数之和问题的时候,因为学的hash所以就想要hash来做,但写完之后一直报错,可能是边界和去重没做好,然后看了卡尔的视频,发现用双指针更好,看完思路就coding了,发现想出这方法的还真是个天才 ,定义一个左指针l和右指针r,遍历nums,根据这三个数的和来移动左右指针,思路就是这样,去重也很重要,第一个元素的去重是用nums[i]==nums[i-1]来判断的,第二个和第三个则是用左右指针来实现
18
我觉得这个就是三数之和的扩展版,也就是在外面在套一层循环来表示第一个数,其他的和三数之和基本一样。