📖 Scenario: You are working on a simple task to find pairs of numbers in a list that add up to a specific target. This technique is useful in many real-life situations like finding two expenses that sum to a budget limit.
🎯 Goal: Build a program that uses the two pointer technique on a sorted array to find all pairs of numbers that add up to a given target sum.
📋 What You'll Learn
Create a sorted list of integers called numbers with the exact values: [1, 2, 3, 4, 5, 6, 7, 8, 9]
Create a variable called target_sum and set it to 10
Use two pointers named left and right to find pairs in numbers that add up to target_sum
Print each pair found in the format (left_value, right_value)
💡 Why This Matters
🌍 Real World
Finding pairs of expenses that match a budget or pairs of items that fit a weight limit.
💼 Career
Two pointer technique is a common pattern in coding interviews and helps solve problems efficiently without extra space.
Progress0 / 4 steps
1
Create the sorted list of numbers
Create a list called numbers with these exact integers in order: [1, 2, 3, 4, 5, 6, 7, 8, 9]
DSA Python
Hint
Use square brackets to create a list and separate numbers with commas.
2
Set the target sum value
Create a variable called target_sum and set it to the integer 10
DSA Python
Hint
Use the assignment operator = to set the value.
3
Use two pointers to find pairs that add to target_sum
Create two variables called left and right. Set left to 0 and right to len(numbers) - 1. Use a while loop with the condition left < right. Inside the loop, calculate the sum of numbers[left] and numbers[right]. If the sum equals target_sum, print the pair as (numbers[left], numbers[right]) and move both pointers inward (left += 1 and right -= 1). If the sum is less than target_sum, move left pointer right (left += 1). If the sum is greater than target_sum, move right pointer left (right -= 1).
DSA Python
Hint
Remember to move pointers based on comparison of current_sum and target_sum.
4
Print the pairs found
Run the program to print all pairs from numbers that add up to target_sum. The output should show each pair on its own line in the format (left_value, right_value).
DSA Python
Hint
Check the console output for pairs that add to 10.
Practice
(1/5)
1. What is the main idea behind the Two Pointer Technique when used on arrays?
easy
A. Use two arrays to store temporary results
B. Sort the array twice before processing
C. Use two indices to scan the array from different ends or positions simultaneously
D. Use recursion to divide the array into two parts
Solution
Step 1: Understand the two pointer concept
The technique uses two pointers (indices) to traverse the array, often starting from opposite ends or different positions.
Step 2: Recognize the purpose
This helps solve problems efficiently by reducing the number of iterations compared to nested loops.
Final Answer:
Use two indices to scan the array from different ends or positions simultaneously -> Option C
Quick Check:
Two pointers scan array ends or positions [OK]
Hint: Think of two fingers moving inward or outward on the array [OK]
Common Mistakes:
Confusing two pointers with using two separate arrays
Assuming sorting is always required
Thinking recursion is part of two pointer technique
2. Which of the following is the correct syntax to initialize two pointers left and right for an array arr in Python?
easy
A. left = 0; right = len(arr) - 1
B. left = 1; right = len(arr)
C. left = -1; right = len(arr)
D. left = 0; right = len(arr)
Solution
Step 1: Identify valid pointer positions
In Python, array indices start at 0, so the left pointer should start at 0.
Step 2: Set right pointer correctly
The right pointer should be at the last valid index, which is length of array minus 1.
Final Answer:
left = 0; right = len(arr) - 1 -> Option A
Quick Check:
Start left at 0 and right at last index [OK]
Hint: Remember Python arrays start at 0, last index is length-1 [OK]
Common Mistakes:
Setting right pointer to len(arr) causes index error
Starting left pointer at 1 misses first element
Using negative indices incorrectly
3. What will be the output of the following Python code?
arr = [1, 3, 5, 7, 9]
left, right = 0, 4
result = []
while left < right:
result.append(arr[left] + arr[right])
left += 1
right -= 1
print(result)
medium
A. [10, 14]
B. [10, 12]
C. [10, 12, 14]
D. [10, 10]
Solution
Step 1: Trace the loop iterations
Initial pointers: left=0, right=4
- Iteration 1: arr[0]+arr[4] = 1+9=10, result=[10]
- left=1, right=3
- Iteration 2: arr[1]+arr[3] = 3+7=10, result=[10,10]
- left=2, right=2 (loop ends because left is not less than right)
Step 2: Check loop condition and final result
Loop stops when left == right (2), so only two sums added: [10, 10]
Final Answer:
[10, 10] -> Option D
Quick Check:
Sum pairs from ends until pointers meet [OK]
Hint: Add pairs from ends until pointers cross [OK]
Common Mistakes:
Including middle element sum when pointers meet
Not updating pointers correctly
Confusing indices causing wrong sums
4. Find the error in the following code that uses two pointers to check if an array is a palindrome:
def is_palindrome(arr):
left, right = 0, len(arr)
while left < right:
if arr[left] != arr[right]:
return False
left += 1
right -= 1
return True
print(is_palindrome([1, 2, 3, 2, 1]))
medium
A. left should start at 1
B. right should be initialized as len(arr) - 1
C. Use 'while left <= right' instead of 'while left < right'
D. Return True should be inside the loop
Solution
Step 1: Check pointer initialization
In Python, last index is len(arr) - 1, but code sets right = len(arr), which is out of range.
Step 2: Correct pointer initialization
Change right to len(arr) - 1 to avoid index error and correctly compare elements.
Final Answer:
right should be initialized as len(arr) - 1 -> Option B
Quick Check:
Last index = length - 1 [OK]
Hint: Last index is length minus one, not length [OK]
Common Mistakes:
Setting right pointer to length causes index error
Changing loop condition incorrectly
Returning True too early inside loop
5. Given a sorted array arr and a target sum target, how can you use the two pointer technique to find if there exists two numbers that add up to target? Choose the correct approach.
hard
A. Initialize left at 0 and right at len(arr)-1; move pointers inward based on sum comparison
B. Initialize both pointers at 0 and move right pointer only
C. Sort the array again and use binary search for each element
D. Use two nested loops to check all pairs
Solution
Step 1: Set pointers at array ends
Start left pointer at 0 (start) and right pointer at last index (len(arr)-1).
Step 2: Move pointers based on sum
Calculate sum of arr[left] + arr[right]. If sum equals target, return True. If sum is less, move left pointer right to increase sum. If sum is more, move right pointer left to decrease sum.
Final Answer:
Initialize left at 0 and right at len(arr)-1; move pointers inward based on sum comparison -> Option A
Quick Check:
Two pointers from ends adjust to find target sum [OK]
Hint: Move left/right pointers based on sum compared to target [OK]
Common Mistakes:
Moving only one pointer without condition
Using nested loops instead of two pointers
Not starting pointers at array ends
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.