Bird
Raised Fist0
DSA Typescriptprogramming~10 mins

Three Sum Problem All Unique Triplets in DSA Typescript - Interactive Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to sort the input array before processing.

DSA Typescript
nums.[1]();
Drag options to blanks, or click blank then click option'
Asort
Breverse
Cpop
Dpush
Attempts:
3 left
💡 Hint
Common Mistakes
Using reverse instead of sort
Trying to pop or push elements here
2fill in blank
medium

Complete the code to skip duplicate elements for the first pointer i.

DSA Typescript
if (i > 0 && nums[i] === nums[i - 1]) [1];
Drag options to blanks, or click blank then click option'
Acontinue
Bbreak
Creturn
Dskip
Attempts:
3 left
💡 Hint
Common Mistakes
Using break which exits the loop
Using return which exits the function
3fill in blank
hard

Fix the error in the while loop condition to move the left pointer correctly.

DSA Typescript
while (left < right && nums[left] === nums[left - 1]) [1]++;
Drag options to blanks, or click blank then click option'
Ai
Bright
Cleft
Dj
Attempts:
3 left
💡 Hint
Common Mistakes
Incrementing right instead of left
Using wrong variable names
4fill in blank
hard

Fill both blanks to correctly move pointers when sum is less or greater than zero.

DSA Typescript
if (sum < 0) [1]++; else [2]--;
Drag options to blanks, or click blank then click option'
Aleft
Bright
Ci
Dj
Attempts:
3 left
💡 Hint
Common Mistakes
Swapping left and right pointers
Using i or j which are not pointers here
5fill in blank
hard

Fill all three blanks to add the triplet and skip duplicates after finding a valid triplet.

DSA Typescript
result.push([nums[i], nums[left], nums[right]]);
while (left < right && nums[left] === nums[left + [1]]) [2]++;
while (left < right && nums[right] === nums[right - [1]]) [3]--;
Drag options to blanks, or click blank then click option'
A1
Bleft
Cright
D0
Attempts:
3 left
💡 Hint
Common Mistakes
Using 0 instead of 1 for index offset
Moving wrong pointers in loops

Practice

(1/5)
1. What is the main goal of the Three Sum Problem All Unique Triplets in an array of integers?
easy
A. Find the maximum sum of any three numbers
B. Find all unique triplets that sum to zero
C. Find the three largest numbers in the array
D. Find pairs of numbers that sum to zero

Solution

  1. Step 1: Understand the problem requirement

    The problem asks to find all unique sets of three numbers (triplets) in the array whose sum equals zero.
  2. Step 2: Differentiate from other sum problems

    Unlike finding pairs or maximum sums, this problem specifically looks for triplets with sum zero and no duplicates.
  3. Final Answer:

    Find all unique triplets that sum to zero -> Option B
  4. Quick Check:

    Three Sum Problem = Find unique triplets summing to zero [OK]
Hint: Look for three numbers adding exactly to zero [OK]
Common Mistakes:
  • Confusing with pair sum problems
  • Looking for maximum sum instead of zero sum
  • Ignoring uniqueness of triplets
2. Which of the following TypeScript function signatures correctly represents a function solving the Three Sum Problem returning all unique triplets as arrays?
easy
A. function threeSum(nums: number[]): number[][]
B. function threeSum(nums: number): number[]
C. function threeSum(nums: string[]): string[][]
D. function threeSum(nums: number[][]): number[]

Solution

  1. Step 1: Analyze the input parameter type

    The input should be an array of numbers, so nums: number[] is correct.
  2. Step 2: Analyze the return type

    The function returns an array of triplets, each triplet is an array of numbers, so number[][] is correct.
  3. Final Answer:

    function threeSum(nums: number[]): number[][] -> Option A
  4. Quick Check:

    Input array of numbers, output array of number triplets [OK]
Hint: Input array of numbers, output array of triplets [OK]
Common Mistakes:
  • Using wrong input type like single number or string array
  • Returning flat array instead of array of arrays
  • Confusing input and output types
3. What is the output of the following TypeScript code snippet?
const nums = [-1, 0, 1, 2, -1, -4];
function threeSum(nums: number[]): number[][] {
  nums.sort((a, b) => a - b);
  const result: number[][] = [];
  for (let i = 0; i < nums.length - 2; i++) {
    if (i > 0 && nums[i] === nums[i - 1]) continue;
    let left = i + 1, right = nums.length - 1;
    while (left < right) {
      const sum = nums[i] + nums[left] + nums[right];
      if (sum === 0) {
        result.push([nums[i], nums[left], nums[right]]);
        while (left < right && nums[left] === nums[left + 1]) left++;
        while (left < right && nums[right] === nums[right - 1]) right--;
        left++;
        right--;
      } else if (sum < 0) {
        left++;
      } else {
        right--;
      }
    }
  }
  return result;
}
console.log(threeSum(nums));
medium
A. [[-1, 0, 1], [0, 1, 2]]
B. [[-4, 0, 4], [-1, -1, 2]]
C. [[-1, -1, 2], [-1, 0, 1]]
D. [[0, 1, 2], [-1, -1, 2]]

Solution

  1. Step 1: Sort the array

    Sorted array is [-4, -1, -1, 0, 1, 2].
  2. Step 2: Find unique triplets summing to zero

    Triplets found are [-1, -1, 2] and [-1, 0, 1].
  3. Final Answer:

    [[-1, -1, 2], [-1, 0, 1]] -> Option C
  4. Quick Check:

    Unique triplets summing zero = [[-1,-1,2],[-1,0,1]] [OK]
Hint: Sort array, use two pointers to find triplets [OK]
Common Mistakes:
  • Not sorting array before processing
  • Including duplicate triplets
  • Incorrect pointer movement causing wrong sums
4. Identify the bug in the following TypeScript code for the Three Sum Problem:
function threeSum(nums: number[]): number[][] {
  nums.sort((a, b) => a - b);
  const result: number[][] = [];
  for (let i = 0; i < nums.length - 2; i++) {
    let left = i + 1, right = nums.length - 1;
    while (left < right) {
      const sum = nums[i] + nums[left] + nums[right];
      if (sum === 0) {
        result.push([nums[i], nums[left], nums[right]]);
        left++;
        right--;
      } else if (sum < 0) {
        left++;
      } else {
        right--;
      }
    }
  }
  return result;
}
medium
A. Missing check to skip duplicate 'i' values
B. Incorrect sorting order of the array
C. Wrong initialization of left and right pointers
D. Returning result before loop ends

Solution

  1. Step 1: Check for duplicate skipping

    The code does not skip duplicate values for index i, which can cause duplicate triplets.
  2. Step 2: Confirm other parts are correct

    Sorting is correct ascending, pointers initialized properly, and return is after loops.
  3. Final Answer:

    Missing check to skip duplicate 'i' values -> Option A
  4. Quick Check:

    Duplicate skipping for i missing = bug [OK]
Hint: Always skip duplicates for i to avoid repeated triplets [OK]
Common Mistakes:
  • Not skipping duplicates for i index
  • Skipping duplicates only for left or right pointers
  • Incorrect pointer initialization
5. Given the array nums = [-2, 1, 0, -1, 2, -3], which of the following is the correct set of all unique triplets that sum to zero?
hard
A. [[-3, 0, 3], [-2, -1, 3], [-2, 0, 2], [-1, 0, 1]]
B. [[-3, 1, 2], [-2, -1, 3], [-1, 0, 1]]
C. [[-3, 0, 3], [-2, -1, 3], [-1, 0, 1]]
D. [[-3, 1, 2], [-2, 0, 2], [-1, 0, 1]]

Solution

  1. Step 1: Sort the array

    Sorted array is [-3, -2, -1, 0, 1, 2].
  2. Step 2: Find all unique triplets summing to zero

    Triplets are [-3, 1, 2], [-2, 0, 2], and [-1, 0, 1].
  3. Final Answer:

    [[-3, 1, 2], [-2, 0, 2], [-1, 0, 1]] -> Option D
  4. Quick Check:

    All unique triplets summing zero = [[-3,1,2],[-2,0,2],[-1,0,1]] [OK]
Hint: Sort and check pairs with two pointers for zero sum [OK]
Common Mistakes:
  • Including triplets with wrong sums
  • Missing valid triplets
  • Including duplicates or invalid triplets
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard