详细布置
454.四数相加II
建议:本题是使用map巧妙解决的问题,好好体会一下哈希法如何提高程序执行效率,降低时间复杂度,当然使用哈希法会提高空间复杂度,但一般来说我们都是舍空间换时间,工业开发也是这样。
题目链接/文章讲解/视频讲解:https://programmercarl.com/0454.%E5%9B%9B%E6%95%B0%E7%9B%B8%E5%8A%A0II.html
整体思路:就是有种C22和C22在进行匹配选择的感觉,很神奇。
383.赎金信
建议:本题和242.有效的字母异位词是一个思路,算是拓展题
题目链接/文章讲解:https://programmercarl.com/0383.%E8%B5%8E%E9%87%91%E4%BF%A1.html
黄色标注部分不能再忘记了,属于简单却很致命的地方。
15.三数之和
建议:本题虽然和两数之和很像,也能用哈希法,但用哈希法会很麻烦,双指针法才是正解,可以先看视频理解一下双指针法的思路,文章中讲解的没问题,哈希法很麻烦。
题目链接/文章讲解/视频讲解:https://programmercarl.com/0015.%E4%B8%89%E6%95%B0%E4%B9%8B%E5%92%8C.html
注意:(此题要求a+b+c = 0里面的(a, b, c))
1、i元素时遍历了后面的所有可能性,所以后面再出现和i相等的元素时,必然是重复的,所以是判断num[i] == num[i-1]而不是num[i] == num[i+1]
2、当有重复结果时,至少要先收获一个,再去去重,所以去重应该放在收获后面而不是循环的一开始。
3、哦,一开始还有点没弄懂去重是啥,刚又看了一遍视频,明白了一点:
第1点里面的,是对a进行去重;
第2点是对b和c进行去重,所以有不同的判断式和方法。
18.四数之和
建议:要比较一下,本题和454.四数相加II的区别,为什么454.四数相加II会简单很多,这个想明白了,对本题理解就深刻了。本题思路整体和三数之和一样的,都是双指针,但写的时候有很多小细节,需要注意,建议先看视频。
题目链接/文章讲解/视频讲解:https://programmercarl.com/0018.%E5%9B%9B%E6%95%B0%E4%B9%8B%E5%92%8C.html