📖 Scenario: You have a list of numbers representing heights of mountains in a range. A peak is a mountain that is taller than its neighbors. You want to find any one peak efficiently.
🎯 Goal: Build a Java program that uses binary search to find the index of a peak element in the list of mountain heights.
📋 What You'll Learn
Create an integer array called mountains with the exact values {1, 3, 20, 4, 1, 0}
Create an integer variable called left and set it to 0
Create an integer variable called right and set it to mountains.length - 1
Use a while loop with the condition left < right
Inside the loop, calculate mid as (left + right) / 2
Compare mountains[mid] and mountains[mid + 1] to decide which half to keep
Print the index of the peak element found
💡 Why This Matters
🌍 Real World
Finding a peak element is useful in signal processing, stock price analysis, and terrain mapping where local maximums are important.
💼 Career
Binary search and peak finding algorithms are common in software engineering interviews and real-world applications requiring efficient data analysis.
Progress0 / 4 steps
1
Create the mountain heights array
Create an integer array called mountains with these exact values: {1, 3, 20, 4, 1, 0}
DSA Java
Hint
Use int[] mountains = {1, 3, 20, 4, 1, 0}; to create the array.
2
Set up binary search boundaries
Create two integer variables called left and right. Set left to 0 and right to mountains.length - 1
DSA Java
Hint
Use int left = 0; and int right = mountains.length - 1;.
3
Implement binary search to find a peak
Use a while loop with condition left < right. Inside the loop, calculate mid as (left + right) / 2. If mountains[mid] is less than mountains[mid + 1], set left to mid + 1. Otherwise, set right to mid
DSA Java
Hint
Use binary search logic comparing mountains[mid] and mountains[mid + 1] to move left or right.
4
Print the peak element index
Print the value of left which is the index of a peak element
DSA Java
Hint
Use System.out.println(left); to print the peak index.
Practice
(1/5)
1. What is a peak element in an array when using binary search to find it?
easy
A. The smallest element in the array
B. An element that is greater than its neighbors
C. The first element of the array
D. An element equal to its neighbors
Solution
Step 1: Understand the definition of a peak element
A peak element is one that is strictly greater than its neighbors on both sides (or just one side if at the boundary).
Step 2: Relate to binary search usage
Binary search finds such an element by comparing mid elements with neighbors to decide which half to search next.
Final Answer:
An element that is greater than its neighbors -> Option B
Quick Check:
Peak element = greater than neighbors [OK]
Hint: Peak element is bigger than neighbors, not smallest [OK]
Common Mistakes:
Confusing peak with minimum element
Thinking peak must be at array ends only
Assuming peak equals neighbors
2. Which of the following is the correct way to start the binary search for a peak element in Java?
easy
A. int left = 0, right = arr.length;
B. int left = 1, right = arr.length;
C. int left = 0, right = arr.length - 1;
D. int left = 1, right = arr.length - 1;
Solution
Step 1: Identify valid index range for binary search
Array indices in Java go from 0 to length-1, so left should be 0 and right should be arr.length - 1.
Step 2: Check options for correct initialization
int left = 0, right = arr.length - 1; correctly sets left=0 and right=arr.length-1, which covers the whole array.
Final Answer:
int left = 0, right = arr.length - 1; -> Option C
Quick Check:
Index range = 0 to length-1 [OK]
Hint: Array indices start at 0, end at length-1 [OK]
Common Mistakes:
Starting right at arr.length causes out-of-bounds
Starting left at 1 skips first element
Using invalid index ranges
3. What will be the output index of the peak element for the array [1, 3, 20, 4, 1, 0] using binary search peak finding?
medium
A. 0
B. 1
C. 3
D. 2
Solution
Step 1: Identify peak elements in the array
Array: [1, 3, 20, 4, 1, 0]. 20 at index 2 is greater than neighbors 3 and 4, so it's a peak.
Step 2: Binary search will find index 2 as peak
Binary search compares mid elements and moves left or right until it finds 20 at index 2.
Final Answer:
2 -> Option D
Quick Check:
Peak at index 2 = 20 [OK]
Hint: Peak is local max, here 20 at index 2 [OK]
Common Mistakes:
Choosing first or last element incorrectly
Confusing peak with global max
Ignoring neighbors comparison
4. Given this code snippet to find a peak element, what is the error?
int mid = left + (right - left) / 2;
if (arr[mid] < arr[mid + 1]) {
left = mid + 1;
} else {
right = mid - 1;
}
return left;
medium
A. It may cause ArrayIndexOutOfBoundsException at arr[mid + 1]
B. It returns right instead of left
C. It uses wrong mid calculation causing infinite loop
D. It should compare arr[mid] with arr[mid - 1]
Solution
Step 1: Check boundary conditions for arr[mid + 1]
If mid is at the last index, arr[mid + 1] access causes ArrayIndexOutOfBoundsException.
Step 2: Identify missing boundary check
The code does not check if mid + 1 is within array bounds before accessing.
Final Answer:
It may cause ArrayIndexOutOfBoundsException at arr[mid + 1] -> Option A
Quick Check:
Accessing arr[mid+1] at end causes error [OK]
Hint: Check array bounds before accessing mid+1 [OK]
Common Mistakes:
Ignoring array boundary checks
Assuming mid+1 always valid
Confusing left and right updates
5. You have an array [10, 20, 15, 2, 23, 90, 67]. Using binary search to find a peak element, which index will the algorithm return?
hard
A. 5
B. 6
C. 4
D. 1
Solution
Step 1: Identify all peak elements in the array
Array: [10, 20, 15, 2, 23, 90, 67]. Peaks are 20 (index 1), 90 (index 5).
Step 2: Understand binary search behavior
Binary search compares mid with neighbors and moves towards the side with higher neighbor. It will find 90 at index 5 as peak.
Final Answer:
5 -> Option A
Quick Check:
Peak found at index 5 = 90 [OK]
Hint: Binary search finds any peak, here index 5 with value 90 [OK]
Common Mistakes:
Assuming only first peak is returned
Confusing peak with global max
Not tracing binary search steps carefully
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.