Skip to main content

14. 3Sum

mediumAsked at Revolut

Find every unique triple summing to zero, a Revolut screen that mirrors finding three transaction legs that net to zero across a multi-currency clearing batch.

By Alex Chen, Founder, InterviewChamp.AI · Last verified

Problem

Given an array nums of n integers, return all unique triplets [a, b, c] such that a + b + c = 0. The solution set must not contain duplicate triplets.

Constraints

  • 3 <= nums.length <= 3000
  • -10^5 <= nums[i] <= 10^5

Examples

Example 1

Input
nums=[-1,0,1,2,-1,-4]
Output
[[-1,-1,2],[-1,0,1]]

Example 2

Input
nums=[0,0,0]
Output
[[0,0,0]]

Approaches

1. Brute triple loop

Three nested loops with a set to dedup triples.

Time
O(n^3)
Space
O(n)
for i for j for k if a+b+c===0 push sorted triple to a Set

Tradeoff:

2. Sort + two-pointer

Sort once, fix one element, then run a two-pointer sweep on the rest. Skip duplicates explicitly.

Time
O(n^2)
Space
O(1)
function threeSum(nums){
  nums.sort((a,b)=>a-b);
  const res = [];
  for (let i=0;i<nums.length-2;i++){
    if (i>0 && nums[i]===nums[i-1]) continue;
    let l = i+1, r = nums.length-1;
    while (l<r){
      const s = nums[i]+nums[l]+nums[r];
      if (s===0){ res.push([nums[i],nums[l],nums[r]]); while (l<r && nums[l]===nums[l+1]) l++; while (l<r && nums[r]===nums[r-1]) r--; l++; r--; }
      else if (s<0) l++; else r--;
    }
  }
  return res;
}

Tradeoff:

Revolut-specific tips

Revolut grades for explicit duplicate-skipping logic — they'll ask why you advance both pointers past equal values, which is the same idea as deduping equal transaction legs.

Solve it now

Free. No sign-up. Python and JavaScript run instantly in your browser.

Output

Press Run or Cmd+Enter to execute

Practice these live with InterviewChamp.AI

Drill 3Sum and other Revolut interview questions under real-loop conditions with instant feedback on your reasoning, complexity claims, and code.

Practice these live with InterviewChamp.AI →