# Leetcode: Three sum

Given a list of integers, add three integers at the same time so that the sum of those integers is `0`. There should be no repetition of integers, for example `[-1, 0, 1]` is equivalent to `[-1, 1, 0]`. The solution makes use of the fact that duplicate numbers can be ignored. To do this, the numbers need to be sorted first. Then, if the next number is the same as the previous, it can be skipped. This does not affect the number of the other pointers, thus there can be the same number in different pointers. In total there are two loops needed. The outer loop iterates from the smallest to the third-largest number. For every iteration, a pointer `p2` and `p3` are defined. The pointer `p2` starts directly one position right of `p1` while `p3` starts at the end of the list. We then need to distinguish three cases. If the sum is exactly `0`, we can add the item to the results. If it is greater than `0`, we move the pointer `p3` to the left which makes the number smaller. If it is less than `0`, we move `p2` to the right which increases the total sum. We continue this approach until `p2` and `p3` meet, then continue with the outer iteration. Additionally, there is some logic to deal with duplicates.

Runtime: 1340 ms, faster than 50.64% of Python3 online submissions for 3Sum. Memory Usage: 18.2 MB, less than 39.78% of Python3 online submissions for 3Sum.