Bird
Raised Fist0
DSA Javaprogramming~10 mins

Two Sum Problem Classic Hash Solution 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 declare the HashMap for storing numbers and their indices.

DSA Java
Map<Integer, Integer> map = new HashMap[1];
Drag options to blanks, or click blank then click option'
A()
B[]
C<>
D{}
Attempts:
3 left
💡 Hint
Common Mistakes
Using square brackets [] instead of parentheses
Using curly braces {} which are for blocks or initializers
Using angle brackets <> which are for generics only
2fill in blank
medium

Complete the code to check if the map contains the complement of the current number.

DSA Java
if (map.[1](target - nums[i])) {
Drag options to blanks, or click blank then click option'
AcontainsValue
BcontainsKey
Cget
Dput
Attempts:
3 left
💡 Hint
Common Mistakes
Using containsValue which checks values, not keys
Using get which retrieves a value but does not check existence
Using put which inserts a key-value pair
3fill in blank
hard

Fix the error in the return statement to correctly return the indices as an array.

DSA Java
return new int[] {map.get(target - nums[i]), [1];
Drag options to blanks, or click blank then click option'
Amap
Btarget
Cnums[i]
Di
Attempts:
3 left
💡 Hint
Common Mistakes
Returning the target value instead of the index
Returning the number nums[i] instead of its index
Returning the map object which is not an index
4fill in blank
hard

Fill both blanks to correctly add the current number and its index to the map.

DSA Java
map.[1](nums[i], [2]);
Drag options to blanks, or click blank then click option'
Aput
Bi
Cget
DcontainsKey
Attempts:
3 left
💡 Hint
Common Mistakes
Using get instead of put to add elements
Using containsKey which only checks existence
Using wrong value instead of index i
5fill in blank
hard

Fill all three blanks to complete the for-loop header iterating over the array indices.

DSA Java
for (int [1] = 0; [2] < [3]; [1]++) {
Drag options to blanks, or click blank then click option'
Ai
Bnums.length
Dj
Attempts:
3 left
💡 Hint
Common Mistakes
Using j instead of i inconsistently
Using nums instead of nums.length in the condition
Incorrect increment variable

Practice

(1/5)
1. What is the main purpose of using a hash map in the classic Two Sum problem solution?
easy
A. To store the sum of all pairs
B. To sort the array before searching
C. To store numbers and their indices for quick lookup
D. To reverse the array elements

Solution

  1. Step 1: Understand the role of hash map

    The hash map stores each number as a key and its index as the value for quick access.
  2. Step 2: Explain why quick lookup is needed

    Quick lookup helps find if the complement (target - current number) exists without scanning the entire array again.
  3. Final Answer:

    To store numbers and their indices for quick lookup -> Option C
  4. Quick Check:

    Hash map = quick index lookup [OK]
Hint: Hash map stores values for instant complement checks [OK]
Common Mistakes:
  • Thinking hash map sorts the array
  • Storing sums instead of indices
  • Using hash map to reverse elements
2. Which of the following is the correct Java syntax to declare a hash map for integer keys and values used in Two Sum?
easy
A. HashMap map = new HashMap();
B. HashMap map = new HashMap<>();
C. Map map = new HashMap<>();
D. HashMap map = new HashMap<>();

Solution

  1. Step 1: Identify correct generic types for HashMap

    Java uses wrapper classes Integer, not primitive int, for generics.
  2. Step 2: Check syntax correctness

    HashMap map = new HashMap<>(); correctly declares HashMap with diamond operator for instantiation.
  3. Final Answer:

    HashMap map = new HashMap<>(); -> Option D
  4. Quick Check:

    Use wrapper classes and diamond operator [OK]
Hint: Use Integer, not int, for HashMap generics in Java [OK]
Common Mistakes:
  • Using primitive types int in generics
  • Missing diamond operator <>
  • Incorrect Map interface usage
3. What will be the output of the following Java code snippet for input nums = [2, 7, 11, 15], target = 9?
public int[] twoSum(int[] nums, int target) {
    Map map = new HashMap<>();
    for (int i = 0; i < nums.length; i++) {
        int complement = target - nums[i];
        if (map.containsKey(complement)) {
            return new int[] { map.get(complement), i };
        }
        map.put(nums[i], i);
    }
    return new int[] {};
}
medium
A. [1, 2]
B. [0, 1]
C. [2, 3]
D. []

Solution

  1. Step 1: Trace the loop and map updates

    i=0: map={}, complement=9-2=7, not found, map={2:0} i=1: complement=9-7=2, found in map at index 0, return [0,1]
  2. Step 2: Return indices of the two numbers that sum to target

    Indices 0 and 1 correspond to numbers 2 and 7 which sum to 9.
  3. Final Answer:

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

    2 + 7 = 9 [OK]
Hint: Check complement in map before adding current number [OK]
Common Mistakes:
  • Returning indices in wrong order
  • Not checking complement before insertion
  • Returning empty array incorrectly
4. Identify the error in the following Two Sum Java method and select the fix:
public int[] twoSum(int[] nums, int target) {
    Map map = new HashMap<>();
    for (int i = 0; i <= nums.length; i++) {
        int complement = target - nums[i];
        if (map.containsKey(complement)) {
            return new int[] { map.get(complement), i };
        }
        map.put(nums[i], i);
    }
    return new int[] {};
}
medium
A. Change loop condition to i < nums.length
B. Change map to TreeMap
C. Remove map.put line
D. Change return type to List<Integer>

Solution

  1. Step 1: Identify the loop boundary error

    The loop uses i <= nums.length which causes ArrayIndexOutOfBoundsException at last iteration.
  2. Step 2: Fix the loop condition

    Changing to i < nums.length prevents out-of-bound access and fixes the error.
  3. Final Answer:

    Change loop condition to i < nums.length -> Option A
  4. Quick Check:

    Loop index must be less than array length [OK]
Hint: Use i < length, not i <= length, for array loops [OK]
Common Mistakes:
  • Using <= instead of < in loop condition
  • Changing map type unnecessarily
  • Removing essential map insertion
5. Given the input array nums = [3, 3, 4, 5] and target = 6, what will the classic Two Sum hash solution return? Consider the code:
public int[] twoSum(int[] nums, int target) {
    Map map = new HashMap<>();
    for (int i = 0; i < nums.length; i++) {
        int complement = target - nums[i];
        if (map.containsKey(complement)) {
            return new int[] { map.get(complement), i };
        }
        map.put(nums[i], i);
    }
    return new int[] {};
}
hard
A. [0, 1]
B. [1, 2]
C. [2, 3]
D. []

Solution

  1. Step 1: Trace the loop and map updates with duplicates

    i=0: map={}, complement=6-3=3, not found, map={3:0} i=1: complement=6-3=3, found at index 0, return [0,1]
  2. Step 2: Understand handling of duplicates

    Even with duplicates, the first pair found is indices 0 and 1, both 3s summing to 6.
  3. Final Answer:

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

    3 + 3 = 6 [OK]
Hint: Duplicates allowed; first matching pair returned [OK]
Common Mistakes:
  • Ignoring duplicates and returning wrong indices
  • Returning empty array incorrectly
  • Confusing indices with values
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