Bird
Raised Fist0
DSA Javaprogramming~10 mins

Three Sum Problem All Unique Triplets in DSA Java - 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 Java
Arrays.[1](nums);
Drag options to blanks, or click blank then click option'
Areverse
Bsort
Cfill
Dcopy
Attempts:
3 left
💡 Hint
Common Mistakes
Using reverse instead of sort.
Trying to fill the array instead of sorting.
Copying the array instead of sorting.
2fill in blank
medium

Complete the code to skip duplicate elements for the first pointer to avoid repeated triplets.

DSA Java
if (i > 0 && nums[i] == nums[[1]]) continue;
Drag options to blanks, or click blank then click option'
Ai - 1
Bi + 1
C0
Dnums.length - 1
Attempts:
3 left
💡 Hint
Common Mistakes
Comparing with the next element instead of the previous.
Using an invalid index like 0 or nums.length - 1.
Not checking for duplicates at all.
3fill in blank
hard

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

DSA Java
while (left < right && nums[left] == nums[[1]]) left++;
Drag options to blanks, or click blank then click option'
Aright - 1
Bleft - 1
Cleft + 1
Dright
Attempts:
3 left
💡 Hint
Common Mistakes
Comparing with left - 1 which is already processed.
Comparing with right pointer instead of left.
Not handling duplicates properly.
4fill in blank
hard

Fill both blanks to correctly move the right pointer and skip duplicates after finding a triplet.

DSA Java
while (left < right && nums[right] == nums[[1]]) [2];
Drag options to blanks, or click blank then click option'
Aright + 1
Bright - 1
Cleft++
Dright--
Attempts:
3 left
💡 Hint
Common Mistakes
Incrementing right pointer instead of decrementing.
Comparing with right + 1 without checking bounds.
Using left pointer operations instead of right.
5fill in blank
hard

Fill all three blanks to add the found triplet to the result list correctly.

DSA Java
result.add(Arrays.asList([1], [2], [3]));
Drag options to blanks, or click blank then click option'
Anums[i]
Bnums[left]
Cnums[right]
Di
Attempts:
3 left
💡 Hint
Common Mistakes
Using indices instead of array elements.
Mixing up left and right pointers.
Adding wrong elements to the triplet.

Practice

(1/5)
1. What is the main goal of the Three Sum Problem in data structures and algorithms?
easy
A. Sort the array in ascending order
B. Find the maximum sum of any three elements
C. Find all unique triplets in an array that sum to zero
D. Count the number of pairs that sum to zero

Solution

  1. Step 1: Understand the problem statement

    The Three Sum Problem asks to find all unique sets of three numbers in an array whose sum is zero.
  2. Step 2: Identify the goal

    The goal is to find triplets (three numbers) that add up exactly to zero without duplicates.
  3. Final Answer:

    Find all unique triplets in an array that sum to zero -> Option C
  4. Quick Check:

    Three Sum Problem = Find triplets summing to zero [OK]
Hint: Look for three numbers adding to zero without repeats [OK]
Common Mistakes:
  • Thinking it finds pairs instead of triplets
  • Assuming it sorts the array only
  • Looking for maximum sum instead of zero sum
2. Which of the following Java code snippets correctly initializes an array to be used for solving the Three Sum Problem?
easy
A. int[] nums = (-1, 0, 1, 2, -1, -4);
B. int nums = {-1, 0, 1, 2, -1, -4};
C. int nums[] = new int(-1, 0, 1, 2, -1, -4);
D. int[] nums = new int[]{-1, 0, 1, 2, -1, -4};

Solution

  1. Step 1: Check Java array initialization syntax

    In Java, arrays are initialized with new int[]{...} or directly with curly braces during declaration.
  2. Step 2: Validate each option

    int[] nums = new int[]{-1, 0, 1, 2, -1, -4}; uses correct syntax: int[] nums = new int[]{-1, 0, 1, 2, -1, -4};. Others have syntax errors.
  3. Final Answer:

    int[] nums = new int[]{-1, 0, 1, 2, -1, -4}; -> Option D
  4. Quick Check:

    Correct Java array syntax = int[] nums = new int[]{-1, 0, 1, 2, -1, -4}; [OK]
Hint: Use new int[]{...} to initialize arrays in Java [OK]
Common Mistakes:
  • Using parentheses instead of braces
  • Missing 'new' keyword
  • Declaring array without type
3. What will be the output of the following Java code snippet that attempts to find unique triplets summing to zero?
import java.util.*;
public class ThreeSum {
  public static List threeSum(int[] nums) {
    List res = new ArrayList<>();
    Arrays.sort(nums);
    for (int i = 0; i < nums.length - 2; i++) {
      if (i > 0 && nums[i] == nums[i - 1]) continue;
      int left = i + 1, right = nums.length - 1;
      while (left < right) {
        int sum = nums[i] + nums[left] + nums[right];
        if (sum == 0) {
          res.add(Arrays.asList(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 res;
  }
  public static void main(String[] args) {
    int[] nums = {-1, 0, 1, 2, -1, -4};
    System.out.println(threeSum(nums));
  }
}
medium
A. [[-1, -1, 2], [-1, 0, 1]]
B. [[0, 1, 2], [-1, -1, 2]]
C. [[-4, 2, 2], [-1, 0, 1]]
D. [[-1, 0, 1], [0, 1, 2]]

Solution

  1. Step 1: Sort and iterate through the array

    The array after sorting is [-4, -1, -1, 0, 1, 2]. The code skips duplicates and uses two pointers to find triplets summing to zero.
  2. Step 2: Identify unique triplets summing to zero

    Triplets found are [-1, -1, 2] and [-1, 0, 1]. These are added to the result list.
  3. Final Answer:

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

    Unique triplets summing zero = [[-1, -1, 2], [-1, 0, 1]] [OK]
Hint: Sort array, use two pointers to find zero sum triplets [OK]
Common Mistakes:
  • Not sorting array before two-pointer approach
  • Including duplicate triplets
  • Incorrect pointer movement causing wrong sums
4. Identify the bug in the following Java code snippet for the Three Sum Problem and select the correct fix:
public List threeSum(int[] nums) {
  List res = new ArrayList<>();
  Arrays.sort(nums);
  for (int i = 0; i < nums.length - 2; i++) {
    if (nums[i] == nums[i + 1]) continue;
    int left = i + 1, right = nums.length - 1;
    while (left < right) {
      int sum = nums[i] + nums[left] + nums[right];
      if (sum == 0) {
        res.add(Arrays.asList(nums[i], nums[left], nums[right]));
        left++;
        right--;
      } else if (sum < 0) left++;
      else right--;
    }
  }
  return res;
}
medium
A. Remove the sorting step Arrays.sort(nums);
B. Change if (nums[i] == nums[i + 1]) continue; to if (i > 0 && nums[i] == nums[i - 1]) continue;
C. Change while (left < right) to while (left <= right)
D. Add left++ and right-- after the while loop

Solution

  1. Step 1: Identify the duplicate skipping condition

    The code incorrectly checks nums[i] == nums[i + 1] which can cause index out of bounds and wrong duplicate skipping.
  2. Step 2: Correct duplicate skipping logic

    The correct check is if (i > 0 && nums[i] == nums[i - 1]) continue; to skip duplicates properly without errors.
  3. Final Answer:

    Change if (nums[i] == nums[i + 1]) continue; to if (i > 0 && nums[i] == nums[i - 1]) continue; -> Option B
  4. Quick Check:

    Proper duplicate skip check = Change if (nums[i] == nums[i + 1]) continue; to if (i > 0 && nums[i] == nums[i - 1]) continue; [OK]
Hint: Skip duplicates by comparing current with previous element [OK]
Common Mistakes:
  • Checking next element instead of previous for duplicates
  • Not sorting array before duplicate check
  • Incorrect pointer conditions causing infinite loops
5. Given an array nums = [0, 0, 0, 0], what is the correct output of the Three Sum Problem algorithm that finds all unique triplets summing to zero?
hard
A. [[0, 0, 0]]
B. [[0, 0, 0], [0, 0, 0]]
C. []
D. [[0, 0]]

Solution

  1. Step 1: Understand the input array with duplicates

    The array has four zeros. The algorithm must find unique triplets summing to zero.
  2. Step 2: Identify unique triplets

    Only one unique triplet exists: [0, 0, 0]. Duplicates are skipped to avoid repeated triplets.
  3. Final Answer:

    [[0, 0, 0]] -> Option A
  4. Quick Check:

    Unique zero triplet = [[0, 0, 0]] [OK]
Hint: One triplet of zeros regardless of duplicates [OK]
Common Mistakes:
  • Returning multiple identical triplets
  • Returning empty list thinking no sum possible
  • Returning pairs instead of 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