← Back to Leo Academy Masterclass

Problem #167: Two Sum II - Input Array Is Sorted

Medium Two Pointers

Intuition & Strategy Breakdown

Use two pointers starting at left (0) and right (N-1). If sum < target, increment left pointer; if sum > target, decrement right pointer.

Python Solution

class Solution:
    def twoSum(self, numbers: list[int], target: int) -> list[int]:
        l, r = 0, len(numbers) - 1
        while l < r:
            cur_sum = numbers[l] + numbers[r]
            if cur_sum > target: r -= 1
            elif cur_sum < target: l += 1
            else: return [l + 1, r + 1]
        return []

Java Solution

class Solution {
    public int[] twoSum(int[] numbers, int target) {
        int l = 0, r = numbers.length - 1;
        while (l < r) {
            int sum = numbers[l] + numbers[r];
            if (sum > target) r--;
            else if (sum < target) l++;
            else return new int[]{l + 1, r + 1};
        }
        return new int[]{};
    }
}
Watch Interactive Video on Leo Academy Main App