FrontendInterviews.dev

Loading problem…

291. 3Sum

Medium•
Acceptance: 85.71%
•
🔓3/3 Pro unlocks today

This problem builds on two-sum. Complete that first, then load your solution to continue.

Given an integer array nums, return all the triplets [nums[i], nums[j], nums[k]] such that i != j, i != k, and j != k, and nums[i] + nums[j] + nums[k] == 0.

Notice that the solution set must not contain duplicate triplets.

Find all unique triplets in the array which gives the sum of zero. This is a classic two-pointer problem that extends the Two Sum pattern.

Requirements

1. Basic Functionality

  • Find all unique triplets that sum to zero
  • No duplicate triplets in the result
  • Each triplet should be sorted in non-decreasing order

Example Usage

threeSum([-1, 0, 1, 2, -1, -4]);  // [[-1, -1, 2], [-1, 0, 1]]
threeSum([0, 1, 1]);               // []
threeSum([0, 0, 0]);               // [[0, 0, 0]]

Real-World Context

  • Financial analysis: Finding combinations of transactions that net to zero
  • Chemistry: Balancing equations where components must cancel out
  • Game development: Finding balanced team compositions

Constraints

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