最近看知乎大神挑戰面試算法題 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 到最后的位置?!具@個我一開始考慮錯了,是個重點】