3Sum

Asked byAmazonFacebookMicrosoftAppleAdobeGoogle

Problem

Given an integer array nums, return all unique triplets [nums[i], nums[j], nums[k]] such that i, j and k are distinct indices and the three values sum to zero. The result must not contain duplicate triplets.

Examples

Example 1
Input:nums = [-1,0,1,2,-1,-4]
Output:[[-1,-1,2],[-1,0,1]]
Example 2
Input:nums = [0,1,1]
Output:[]
No triplet sums to zero.

Constraints

  • 3 <= nums.length <= 3000

Solve it in the editor. Sign in free to run your Python or JavaScript against test cases, get a verdict, and track your attempts.

Solve on FeatCode →

How to approach it: the Two Pointers pattern

Two indices move through a sorted (or sortable) structure — often from opposite ends or at different speeds — to avoid the nested loops a brute-force scan would need.

Look for this pattern when

  • The input is sorted, or can be sorted without losing information you need.
  • You're looking for a pair, triplet, or partition that satisfies a sum or comparison condition.
  • You need to compare values from both ends of a sequence (e.g. palindrome checks).

Read the full Two Pointers guide →

Video walkthroughs

Original problem on LeetCode ↗

More Two Pointers problems