3 SUM

最近看知乎大神挑战面试算法题 3 SUM.  我决定也复习一下

这道题真的非常复杂,感觉第一次见的话真的是妥妥的跪。 

大概的想法就是先sort好, 这样的话方便使用Binary 的思想来移动指针。然后双指针大法好!


首先,我们用一个指针头指向Front, 一个指针指向Tail.

3sum = 0 = front + middle + end.

每一次循环,先保存Head 指针位置不变,然后移动middle 和 tail指针。根据目前3个人的sum到达什么程度: 比0大的话,就移动tail指针 这样可以让sum小一点。 比0小移动middle让sum大一点。当==0的时候,加进list。

然后下一轮循环,front 移动一下,然后恢复end 到最后的位置。【这个我一开始考虑错了,是个重点】

3 SUM_第1张图片


3 SUM_第2张图片

你可能感兴趣的:(3 SUM)