two sum

<iframe id="embed_player" frameborder="0" width="280" height="216" src=""></iframe>

Two Sum is problem #1 on, and can, as such, be considered a classic.

The gist

We're given a list: [2, 7, 11, 15] and want to find two numbers adding up to target 9.

The answer is 2 + 7 = 9.

Two pointer approach

The two pointer approach first involves sorting the array, as it will only work on sorted integers.

graph TD A[start] --> C C{s = Ai + Aj} C -->|s == k| D[return i, j] C -->|s < k| E[i += 1] C -->|s > k| F[j -= 1] E --> C F --> C

In other words, our pointer i starts at the left of the list, and our pointer j and the right. If A[i] + A[j] is equals to k we've found our solution. If it's less, then we need to increment i. If it's greater, then we need to decrement j.

See also:

[[ternary conditionals]]