LeetCode Problem

How to Solve 3Sum With Multiplicity

This problem asks to count all triplets `(i, j, k)` in an array where `i < j < k` and the sum equals a target, returning the answer modulo `10^9 + 7`. The efficient solution leverages array scanning combined with hash lookup to handle repeated numbers without redundant enumeration. It requires careful counting of multiplicities to avoid overcounting identical values, especially when elements repeat.

GhostInterview Help

Need help with 3Sum With Multiplicity without spending extra time grinding it?

GhostInterview can read 3Sum With Multiplicity from a screenshot, generate the answer path, explain the complexity, and support solver-first interview workflows when you need direct help fast.

Screenshot Input

Capture the prompt fast instead of rewriting the problem by hand.

Answer + Complexity

Get the solution path, trade-offs, and complexity summary in one pass.

Stealth Workflow

Stay outside captured layers on supported screen-share workflows.

Problem #923Array scanning plus hash lookupReviewed 2026-03-07
Difficulty
Medium
Primary pattern
Array scanning plus hash lookup
Answer-first problem summary
Step-by-step approach and complexity
GhostInterview solver workflow

This problem asks to count all triplets (i, j, k) in an array where i < j < k and the sum equals a target, returning the answer modulo 10^9 + 7. The efficient solution leverages array scanning combined with hash lookup to handle repeated numbers without redundant enumeration. It requires careful counting of multiplicities to avoid overcounting identical values, especially when elements repeat.

Problem Statement

Given an integer array arr and an integer target, return the total number of unique triplets (i, j, k) such that i < j < k and arr[i] + arr[j] + arr[k] == target. The result must be returned modulo 10^9 + 7 to prevent overflow.

For example, in arr = [1,1,2,2,3,3,4,4,5,5] with target = 8, the triplets include (1,2,5), (1,3,4), (2,2,4), (2,3,3) with correct multiplicities, yielding 20 total combinations. Arrays may contain repeated values, requiring careful counting rather than simple combination logic.

Examples

Example 1

Input: arr = [1,1,2,2,3,3,4,4,5,5], target = 8

Output: 20

Enumerating by the values (arr[i], arr[j], arr[k]): (1, 2, 5) occurs 8 times; (1, 3, 4) occurs 8 times; (2, 2, 4) occurs 2 times; (2, 3, 3) occurs 2 times.

Example 2

Input: arr = [1,1,2,2,2,2], target = 5

Output: 12

arr[i] = 1, arr[j] = arr[k] = 2 occurs 12 times: We choose one 1 from [1,1] in 2 ways, and two 2s from [2,2,2,2] in 6 ways.

Example 3

Input: arr = [2,1,3], target = 6

Output: 1

(1, 2, 3) occured one time in the array so we return 1.

Constraints

  • 3 <= arr.length <= 3000
  • 0 <= arr[i] <= 100
  • 0 <= target <= 300

Solution Approach

Sort and use two-pointer scanning

Sort the array and for each fixed first element, use two pointers for the remaining subarray to find pairs summing to the adjusted target. Count multiplicities carefully when elements are equal to avoid overcounting.

Hash counting of elements

Use a hash map to store the frequency of each number. For every pair (i,j), compute the needed third number and multiply by the frequency of that number in the map, adjusting for index ordering to prevent invalid triplets.

Handle special cases with repeated numbers

When numbers are repeated, compute combinations like C(freq,2) or C(freq,3) depending on how many indices share the same value. This ensures correct multiplicity without enumerating every triplet explicitly.

Complexity Analysis

MetricValue
TimeDepends on the final approach
SpaceDepends on the final approach

Time complexity varies: sorting takes O(n log n), scanning with two pointers is O(n^2), and hash counting may reduce repeated computations. Space complexity is O(101) for the hash map due to the value constraint 0 <= arr[i] <= 100.

What Interviewers Usually Probe

  • Interviewer may ask how to handle repeated numbers without overcounting.
  • Interviewer may check if hash counting correctly respects index order i<j<k.
  • Interviewer may probe understanding of combinatorial counting with multiplicities.

Common Pitfalls or Variants

Common pitfalls

  • Failing to account for duplicate elements leading to incorrect counts.
  • Incorrectly applying two-pointer logic without adjusting for identical values.
  • Returning raw counts without modulo 10^9 + 7 causing overflow.

Follow-up variants

  • 4Sum With Multiplicity extending the pattern to quadruplets.
  • Targeted Pair Sum With Multiplicity using the same hash counting for pairs.
  • Subset sum variants with multiplicity constraints on array elements.

How GhostInterview Helps

  • GhostInterview automatically counts multiplicities while respecting index ordering, avoiding manual combinatorial errors.
  • It flags potential pitfalls with repeated elements, showing correct adjustment formulas in real time.
  • It demonstrates both two-pointer and hash counting approaches, guiding efficient implementation.

Topic Pages

FAQ

What is 3Sum With Multiplicity?

It is a problem where you count all triplets in an array whose sum equals a target, considering repeated numbers and returning modulo 10^9 + 7.

How do repeated elements affect the solution?

Repeated elements require combinatorial counting like C(freq,2) or C(freq,3) to account for multiplicity without overcounting.

Can I use a two-pointer approach here?

Yes, after sorting, fix one element and use two pointers on the remaining array, adjusting counts when elements are equal.

What is the best way to handle large arrays efficiently?

Use a hash map to count element frequencies and compute triplet contributions without enumerating all index combinations.

Why modulo 10^9 + 7 is required?

Because the number of triplets can be very large, taking modulo prevents integer overflow and matches problem constraints.

GhostInterview Solver

Need direct help with 3Sum With Multiplicity instead of spending more time grinding it?

Download GhostInterview when you want a LeetCode solver, not another long practice loop. Capture 3Sum With Multiplicity from a screenshot, get the answer path and complexity, and use supported stealth workflows that stay outside captured layers.

Screenshot Input

Capture the prompt fast instead of rewriting the problem by hand.

Answer + Complexity

Get the solution path, trade-offs, and complexity summary in one pass.

Stealth Workflow

Stay outside captured layers on supported screen-share workflows.