A peak element is an element that is greater than its neighbors. For the first or last element, only one neighbor is considered.
Click to reveal answer
intermediate
Why is binary search suitable for finding a peak element?
Because if an element is not a peak, we can decide which side to move based on the neighbor's value, reducing the search space by half each time.
Click to reveal answer
beginner
In the binary search for peak element, if mid element is less than its right neighbor, which side do we search next?
We search the right half because a peak must exist there.
Click to reveal answer
beginner
What is the time complexity of finding a peak element using binary search?
O(log n), where n is the number of elements in the array.
Click to reveal answer
beginner
Show the base condition to stop the binary search when finding a peak element.
When the search space reduces to one element, that element is a peak.
Click to reveal answer
What defines a peak element in an array?
AAn element smaller than its neighbors
BThe first element only
CAn element greater than its neighbors
DThe last element only
✗ Incorrect
A peak element is one that is greater than its neighbors.
If mid element is less than its left neighbor, where should binary search continue?
ALeft half
BEither half
CRight half
DStop search
✗ Incorrect
Search left half because a peak exists there.
What is the worst-case time complexity of binary search for peak element?
AO(log n)
BO(n)
CO(n log n)
DO(1)
✗ Incorrect
Binary search reduces search space by half each step, so O(log n).
Can the first or last element be a peak element?
AOnly the last element can be
BNo, never
COnly the first element can be
DYes, if greater than its only neighbor
✗ Incorrect
First or last element can be peak if greater than their single neighbor.
What happens if mid element is greater than both neighbors?
ASearch left half
BMid is a peak element
CSearch right half
DContinue searching both halves
✗ Incorrect
If mid is greater than neighbors, it is a peak.
Explain how binary search helps find a peak element in an array.
Think about how neighbors guide the search direction.
You got /4 concepts.
Describe the steps and conditions to implement binary search for finding a peak element.
Focus on the loop and decision making.
You got /5 concepts.
Practice
(1/5)
1. What is a peak element in an array when using binary search to find it?
easy
A. An element that is greater than its neighbors
B. An element that is smaller than its neighbors
C. The first element of the array
D. The last element of the array
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 only one side if at the boundary).
Step 2: Apply this to binary search context
Binary search finds such an element by comparing mid element with neighbors to decide search direction.
Final Answer:
An element that is greater than its neighbors -> Option A
Quick Check:
Peak element = greater than neighbors [OK]
Hint: Peak element is bigger than neighbors, not smaller [OK]
Common Mistakes:
Confusing peak with smallest element
Thinking peak is always first or last element
Ignoring boundary conditions
2. Which of the following is the correct syntax to start binary search for peak element in C++?
easy
A. int left = 1, right = n;
B. int left = 0, right = n;
C. int left = 0, right = n - 1;
D. int left = 1, right = n - 1;
Solution
Step 1: Identify valid index range for array of size n
Array indices go from 0 to n-1, so left should start at 0 and right at n-1.
Step 2: Check each option for correct initialization
int left = 0, right = n - 1; correctly initializes left=0 and right=n-1, suitable for binary search.
Final Answer:
int left = 0, right = n - 1; -> Option C
Quick Check:
Index range = 0 to n-1 [OK]
Hint: Array indices start at 0, end at n-1 [OK]
Common Mistakes:
Starting left at 1 instead of 0
Setting right to n instead of n-1
Confusing inclusive and exclusive 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. 2
C. 3
D. 1
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 B
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 as peak incorrectly
Confusing index with value
Not checking both neighbors
4. Given the following code snippet, what is the bug that prevents finding the peak element correctly?
int findPeak(int arr[], int n) {
int left = 0, right = n - 1;
while (left < right) {
int mid = (left + right) / 2;
if (arr[mid] < arr[mid + 1])
left = mid + 1;
else
right = mid - 1;
}
return left;
}
medium
A. Decreasing right by 1 skips potential peak
B. Mid calculation causes overflow
C. Loop condition should be left <= right
D. Returning left instead of right
Solution
Step 1: Analyze the binary search update steps
If arr[mid] >= arr[mid+1], the code sets right = mid - 1, which skips mid as a candidate peak.
Step 2: Correct approach is to set right = mid to include mid in search
Setting right = mid keeps mid in range; subtracting 1 may miss the peak.
Final Answer:
Decreasing right by 1 skips potential peak -> Option A
Quick Check:
Right update must keep mid included [OK]
Hint: Do not exclude mid when moving right pointer [OK]
Common Mistakes:
Setting right = mid - 1 instead of right = mid
Ignoring mid element as possible peak
Incorrect loop condition
5. You have an array [10, 20, 15, 2, 23, 90, 67]. Using binary search for peak element, which index will be returned and why?
hard
A. 0, because 10 is the first element
B. 1, because 20 is a peak element
C. 6, because 67 is the last element
D. 5, because 90 is a peak element
Solution
Step 1: Identify all peak elements in the array
Array: [10, 20, 15, 2, 23, 90, 67]. Peaks are 20 (index 1) and 90 (index 5). 90 is greater than neighbors 23 and 67.
Step 2: Binary search tends to find a peak, often the higher one
Binary search will find 90 at index 5 because it is a higher peak than 20 at index 1.
Final Answer:
5, because 90 is a peak element -> Option D
Quick Check:
Highest peak found = index 5 [OK]
Hint: Binary search finds any peak; higher peaks likely found first [OK]
Common Mistakes:
Assuming first peak is always returned
Ignoring multiple peaks in array
Confusing last element as peak without checking neighbors
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.