Two Pointers

Technique using two pointers to solve array problems efficiently

Algorithm Code

Time: O(n) | Space: O(1)

1function twoSum(nums, target) {
2  left = 0
3  right = nums.length - 1
4  
5  while (left < right) {
6    sum = nums[left] + nums[right]
7    
8    if (sum === target) {
9      return [left, right]
10    } else if (sum < target) {
11      left++
12    } else {
13      right--
14    }
15  }
16  return [-1, -1]
17}

Algorithm Steps

Step 1 of 7

1

Initialize Pointers

Set left pointer at start (0) and right pointer at end (6) of sorted array

2

Calculate Sum

Sum = nums[0] + nums[6] = 2 + 15 = 17. Target is 9.

3

Sum > Target

17 > 9, so move right pointer left to decrease sum

4

Calculate New Sum

Sum = nums[0] + nums[5] = 2 + 11 = 13. Target is 9.

5

Sum > Target

13 > 9, so move right pointer left again

6

Calculate New Sum

Sum = nums[0] + nums[4] = 2 + 7 = 9. Target is 9.

7

Found Target!

Sum equals target! Return indices [0, 4]

Two Pointers - Two Sum

Target: 9 | Current Sum: 0

Left: -1 | Right: -1

Left Pointer
Right Pointer
Found
Step 0 of 60%
0.25x4x