14. 3Sum
mediumAsked at RevolutFind 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
nums=[-1,0,1,2,-1,-4][[-1,-1,2],[-1,0,1]]Example 2
nums=[0,0,0][[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 SetTradeoff:
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.
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 →