📖 Scenario: You are helping a friend who runs a small store. They want to find two items that together cost exactly a certain amount of money. You will write a program to find the positions of these two items in the price list.
🎯 Goal: Build a program that finds two numbers in a list that add up to a target value using a hash map (dictionary) for fast lookup.
📋 What You'll Learn
Create a list called prices with the exact values: [2, 7, 11, 15]
Create a variable called target and set it to 9
Use a dictionary called seen to store numbers and their indices while looping through prices
Find two indices i and j such that prices[i] + prices[j] == target
Print the list of the two indices as the final output
💡 Why This Matters
🌍 Real World
Finding two items in a list that add up to a specific value is useful in shopping apps, budgeting tools, and financial software.
💼 Career
This problem is a common coding interview question and helps develop skills in using hash maps for efficient searching.
Progress0 / 4 steps
1
Create the list of prices
Create a list called prices with these exact values: [2, 7, 11, 15]
DSA Python
Hint
Use square brackets to create a list and separate numbers with commas.
2
Set the target sum
Create a variable called target and set it to 9
DSA Python
Hint
Use the equals sign to assign the value 9 to the variable target.
3
Find two indices using a dictionary
Create an empty dictionary called seen. Use a for loop with variables i and num to iterate over enumerate(prices). Inside the loop, check if target - num is in seen. If yes, create a list result with seen[target - num] and i, then break the loop. Otherwise, add num as a key and i as its value to seen.
DSA Python
Hint
Use a dictionary to remember numbers and their positions. Check if the complement exists before adding the current number.
4
Print the result
Print the variable result to show the two indices found.
DSA Python
Hint
Use the print function to display the list of indices.
Practice
(1/5)
1. What is the main idea behind the classic hash solution for the Two Sum Problem?
easy
A. Use a dictionary to store numbers and their indices for quick lookup
B. Sort the array and use two pointers to find the sum
C. Use nested loops to check every pair of numbers
D. Use recursion to find pairs that add up to the target
Solution
Step 1: Understand the problem requirement
The Two Sum problem asks to find two numbers in an array that add up to a target value.
Step 2: Explain the hash solution approach
Using a dictionary (hash map) allows storing each number's index and checking if the complement (target - current number) exists quickly.
Final Answer:
Use a dictionary to store numbers and their indices for quick lookup -> Option A
Quick Check:
Hash map lookup = fast pair finding [OK]
Hint: Use a dictionary to find complements quickly [OK]
Common Mistakes:
Trying to sort the array which changes indices
Using nested loops causing slow performance
Not storing indices, only values
2. Which of the following is the correct syntax to check if a key exists in a Python dictionary named seen?
In Python, to check if a key exists in a dictionary, use the syntax if key in dict:.
Step 2: Identify correct option
if key in seen: uses the correct syntax. if key exists in seen: and D are invalid syntax. if seen.has_key(key): is legacy and removed in Python 3.
Final Answer:
if key in seen: -> Option B
Quick Check:
Python dict key check = if key in dict [OK]
Hint: Use 'in' keyword to check dictionary keys [OK]
Common Mistakes:
Using outdated has_key() method
Writing invalid syntax like 'exists in'
Confusing keys with values
3. What will be the output of the following code?
def two_sum(nums, target):
seen = {}
for i, num in enumerate(nums):
complement = target - num
if complement in seen:
return [seen[complement], i]
seen[num] = i
return []
print(two_sum([2, 7, 11, 15], 9))
medium
A. [0, 1]
B. [1, 2]
C. [2, 3]
D. []
Solution
Step 1: Trace the loop and dictionary updates
Iteration 0: num=2, complement=7, seen={}, complement not in seen, add 2:0. Iteration 1: num=7, complement=2, complement 2 in seen at index 0, return [0,1].
Step 2: Determine returned indices
The function returns indices [0,1] where nums[0]+nums[1]=2+7=9.
Final Answer:
[0, 1] -> Option A
Quick Check:
Indices of 2 and 7 = [0, 1] [OK]
Hint: Check complement in dict before adding current number [OK]
Common Mistakes:
Returning values instead of indices
Adding current number before checking complement
Returning empty list incorrectly
4. The following code tries to solve the Two Sum problem but has a bug. What is the bug?
def two_sum(nums, target):
seen = {}
for i, num in enumerate(nums):
if num in seen:
return [seen[num], i]
complement = target - num
seen[complement] = i
return []
medium
A. It does not check for complement in dictionary
B. It returns indices in wrong order
C. It stores complement as key instead of the number itself
D. It uses enumerate incorrectly
Solution
Step 1: Analyze dictionary key storage
The code stores complement as key with current index, but it should store the number as key to check complement later.
Step 2: Identify impact of wrong key storage
Because complement is stored as key, the lookup for num in seen fails to find correct pairs, causing wrong or no results.
Final Answer:
It stores complement as key instead of the number itself -> Option C
Quick Check:
Store number as key, not complement [OK]
Hint: Store numbers as keys, check for complement [OK]
Common Mistakes:
Swapping complement and number keys
Returning indices before checking complement
Not using enumerate properly
5. Given the list nums = [3, 3, 4, 5] and target = 6, what will the classic hash solution return? Consider the code:
def two_sum(nums, target):
seen = {}
for i, num in enumerate(nums):
complement = target - num
if complement in seen:
return [seen[complement], i]
seen[num] = i
return []
print(two_sum(nums, target))
hard
A. []
B. [1, 2]
C. [2, 3]
D. [0, 1]
Solution
Step 1: Trace the loop with duplicates
Iteration 0: num=3, complement=3, seen={}, complement not in seen, add 3:0. Iteration 1: num=3, complement=3, complement 3 in seen at index 0, return [0,1].
Step 2: Understand duplicate handling
The solution correctly finds the two 3's at indices 0 and 1 that sum to 6.
Final Answer:
[0, 1] -> Option D
Quick Check:
Two 3's indices = [0, 1] [OK]
Hint: Duplicates allowed; first pair found is returned [OK]
Common Mistakes:
Ignoring duplicates and returning empty list
Returning wrong indices due to overwriting
Assuming no pair exists when duplicates present
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.