3Sum
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.
Examples
nums = [-1,0,1,2,-1,-4][[-1,-1,2],[-1,0,1]]nums = [0,1,1][]nums = [0,0,0][[0,0,0]]Constraints
3 <= nums.length <= 3000-10^5 <= nums[i] <= 10^5
š” Hints
Hint 1
Sort the array first.
Hint 2
Fix one number and use Two Pointers for the remaining two.
Hint 3
Skip duplicate values to avoid duplicate triplets.
Algorithm Complexity
Official asymptotic Big-O runtime and auxiliary memory analysis
Sort the array. Fix one element, then use two pointers to find pairs that sum to -nums[i]. Skip duplicates at all three levels.
Sorting takes O(n log n). For each fixed element i, the two-pointer scan over the remaining sub-array takes O(n), yielding O(n²) total time.
Auxiliary space is O(1) beyond pointers (excluding the output array and sorting space).
š Real-World Use Cases
Finding combinations of long/short positions that net to zero exposure ā the same 3Sum logic on sorted asset weights.
š Dry Run
Sort: [-1,0,1,2,-1,-4] ā [-4,-1,-1,0,1,2]