📖 Scenario: You are working with a list of numbers representing daily temperatures. You want to find pairs of days where the temperature difference is exactly a certain value.
🎯 Goal: Build a program that uses the two pointer technique to find all pairs of numbers in a sorted array whose difference equals a given target.
📋 What You'll Learn
Create an integer array called temperatures with the exact values: 2, 5, 9, 12, 15, 18
Create an integer variable called targetDifference and set it to 3
Use two integer pointers called left and right to find all pairs where the difference between temperatures[right] and temperatures[left] is equal to targetDifference
Print each pair found in the format: (leftValue, rightValue)
💡 Why This Matters
🌍 Real World
Finding pairs of values with a specific difference is useful in tasks like analyzing temperature changes, stock price differences, or time intervals.
💼 Career
Two pointer technique is a common pattern in coding interviews and real-world software development for efficient array processing.
Progress0 / 4 steps
1
Create the temperatures array
Create an integer array called temperatures with these exact values: 2, 5, 9, 12, 15, 18
DSA C#
Hint
Use int[] temperatures = {2, 5, 9, 12, 15, 18}; to create the array.
2
Set the target difference
Create an integer variable called targetDifference and set it to 3
DSA C#
Hint
Use int targetDifference = 3; to create the variable.
3
Use two pointers to find pairs with the target difference
Create two integer variables called left and right and set them to 0 and 1 respectively. Use a while loop to move the pointers through the temperatures array and find all pairs where temperatures[right] - temperatures[left] == targetDifference. Inside the loop, if the difference is less than targetDifference, move right forward by 1. If the difference is greater than targetDifference, move left forward by 1. If the difference equals targetDifference, print the pair and move both pointers forward by 1.
DSA C#
Hint
Use a while loop with left and right pointers and compare the difference to targetDifference.
4
Print all pairs found
Run the program to print all pairs of numbers from temperatures whose difference equals targetDifference. The output should show each pair in the format (leftValue, rightValue) on its own line.
DSA C#
Hint
Make sure to print each pair exactly as (leftValue, rightValue) using System.Console.WriteLine.
Practice
(1/5)
1. What is the main idea behind the Two Pointer Technique when used on arrays?
easy
A. Use two indices to traverse the array from different ends or positions simultaneously
B. Use one pointer to traverse and another to store values
C. Sort the array first and then use binary search
D. Use recursion to split the array into two parts
Solution
Step 1: Understand the two pointer approach
The technique uses two pointers (indices) to scan the array from different positions, often from start and end. This helps solve problems efficiently by reducing the number of iterations compared to nested loops.
Final Answer:
Use two indices to traverse the array from different ends or positions simultaneously -> Option A
Quick Check:
Two pointers move from different ends = D [OK]
Hint: Two pointers move from start and end to meet in middle [OK]
Common Mistakes:
Thinking it always requires sorting first
Using only one pointer instead of two
Confusing with recursion or binary search
2. Which of the following is the correct syntax to initialize two pointers left and right for an array arr in C#?
easy
A. int left = -1, right = arr.Length + 1;
B. int left = 1, right = arr.Length;
C. int left = arr.Length, right = 0;
D. int left = 0, right = arr.Length - 1;
Solution
Step 1: Understand array indexing and initialize pointers correctly
Arrays start at index 0 and end at index Length - 1. Left pointer starts at 0 (first element), right pointer at Length - 1 (last element).
Final Answer:
int left = 0, right = arr.Length - 1; -> Option D
Quick Check:
Start at 0 and end at Length-1 = A [OK]
Hint: Start left at 0, right at length minus one [OK]
Common Mistakes:
Starting right pointer at arr.Length (out of bounds)
Starting left pointer at 1 instead of 0
Using negative indices
3. What will be the output of the following C# code?
int[] arr = {1, 2, 3, 4, 5, 6};
int left = 0, right = arr.Length - 1;
int sum = 0;
while (left < right) {
sum += arr[left] + arr[right];
left++;
right--;
}
Console.WriteLine(sum);
medium
A. 21
B. 18
C. 20
D. 15
Solution
Step 1: Trace the loop iterations
Pairs added: (1+6)=7, (2+5)=7, (3+4)=7; sum = 7+7+7 = 21. Loop runs while left < right, so stops after these pairs.
Final Answer:
21 -> Option A
Quick Check:
Sum of pairs from ends = 21 [OK]
Hint: Sum pairs from ends until pointers meet [OK]
Common Mistakes:
Adding elements twice
Loop running when left equals right
Incorrect sum calculation
4. Identify the error in the following C# code using two pointers to find if array arr contains two numbers that sum to target.
int left = 0, right = arr.Length - 1;
while (left <= right) {
int sum = arr[left] + arr[right];
if (sum == target) return true;
else if (sum < target) left++;
else right--;
}
return false;
medium
A. The sum calculation is incorrect
B. The pointers should both start at 0
C. The loop condition should be left < right instead of left <= right
D. The return statements are missing a value
Solution
Step 1: Analyze loop condition
Using left <= right allows pointers to be equal, causing sum of same element twice. Change to left < right to avoid using the same element twice.
Final Answer:
The loop condition should be left < right instead of left <= right -> Option C
Quick Check:
Pointers must not cross or equal for two distinct elements [OK]
Hint: Use left < right to avoid same element twice [OK]
Common Mistakes:
Allowing pointers to be equal causing wrong sums
Starting both pointers at 0
Misplacing return statements
5. Given a sorted array arr and a number k, how can you use the two pointer technique to find if there exists a pair with sum equal to k? Choose the correct approach.
hard
A. Initialize both pointers at start; move both right until sum equals k
B. Initialize two pointers at start and end; move left pointer right if sum < k, else move right pointer left
C. Initialize two pointers at middle; move both outward until sum equals k
D. Sort the array again and use binary search for each element
Solution
Step 1: Set pointers and move based on sum
Left pointer at 0, right pointer at last index. If sum < k, move left right to increase sum; if sum > k, move right left to decrease sum.
Final Answer:
Initialize two pointers at start and end; move left pointer right if sum < k, else move right pointer left -> Option B
Quick Check:
Two pointers adjust to reach target sum efficiently [OK]
Hint: Move pointers inward based on sum comparison [OK]
Common Mistakes:
Starting both pointers at same side
Moving pointers in wrong direction
Sorting array again unnecessarily
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.