15
https://leetcode.com/problems/3sum/
求所有满足三数之和为 0 的子数组。
这道题主要是利用双指针来做。
16
https://leetcode.com/problems/3sum-closest/
求三数之和最接近给定的 target
的情况。返回找到的三个数之和。
依然是双指针。
17
直观的想法是把这个电话号码的组合想象成一棵树,根节点是一个空字符串,然后根据输入的数字,一层一层地向下面生长。但是,这个和那种简单地暴力循环一样,是不容易实现的。注意到,这里的最终的结果字符串是有顺序的,所以,我们可以把上一次的结果暂存起来,然后把接下来一次的所有情况给遍历一下,生成新的一次的情况,直至最后得到想要的结果。上面的代码是把所有的中间结果都存储了起来。但是,实际上,我们只需要
size 为 2 的数组。因此,下面的代码进行了优化:
18
一言以蔽之,双指针。
注意一点,最后要去重。所以我一开始使用了 set,最后再转化成
list。可是,这样似乎有效率问题,而且,本题应该有更好的方法。抽时间研究。
19
经典快慢指针。
20
经典堆栈问题。