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
beginner
Why use binary search to find a peak element?
Binary search reduces the search space by half each time, making the search efficient (O(log n)) compared to checking every element (O(n)).
Click to reveal answer
intermediate
In the binary search for a peak element, if the middle element is less than its right neighbor, where do we search next?
We search in 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?
The time complexity is O(log n) because the search space is halved in each step.
Click to reveal answer
intermediate
Explain the base case when using binary search to find a peak element.
When the search space reduces to one element, that element is a peak because it is greater than its neighbors or it is at the boundary.
Click to reveal answer
What defines a peak element in an array?
AThe first element only
BAn element smaller than its neighbors
CThe last element only
DAn element greater than its neighbors
✗ Incorrect
A peak element is greater than its neighbors.
If middle element is less than its right neighbor, where should binary search continue?
ALeft half
BRight half
CBoth halves
DStop searching
✗ Incorrect
The peak must be in the right half if middle is less than right neighbor.
What is the time complexity of binary search for peak element?
AO(log n)
BO(n)
CO(n log n)
DO(1)
✗ Incorrect
Binary search halves the search space each step, so O(log n).
Can the first or last element be a peak element?
AYes, if greater than its only neighbor
BNo, never
COnly the first element can be peak
DOnly the last element can be peak
✗ Incorrect
First or last element can be peak if greater than their single neighbor.
What happens when binary search narrows down to one element?
AAlgorithm fails
BSearch restarts
CIt is the peak element
DNo peak found
✗ Incorrect
One element left means it is a peak by definition.
Describe the steps to find a peak element using binary search.
Think about how binary search halves the array each time.
You got /5 concepts.
Explain why binary search guarantees finding a peak element in an array.
Consider the property of elements compared to neighbors.
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 middle elements with neighbors to decide which half to search next.
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:
Thinking peak is smallest element
Confusing peak with first or last element always
Ignoring boundary conditions
2. Which Go code snippet correctly initializes the binary search boundaries to find a peak element in array nums?
easy
A. left, right := 1, len(nums)
B. left, right := 0, len(nums) - 1
C. left, right := 0, len(nums)
D. left, right := 1, len(nums) - 1
Solution
Step 1: Identify valid index range for array in Go
Array indices in Go start at 0 and end at len(nums)-1, so boundaries must be set accordingly.
Step 2: Check each option for correct boundary initialization
left, right := 0, len(nums) - 1 correctly sets left=0 and right=len(nums)-1, covering full array indices.
Final Answer:
left, right := 0, len(nums) - 1 -> Option B
Quick Check:
Array indices 0 to len-1 [OK]
Hint: Array indices go from 0 to length-1 in Go [OK]
Common Mistakes:
Setting right to len(nums) (out of range)
Starting left at 1 and missing first element
Using negative indices
3. What will be the output index of the peak element for the array nums := []int{1, 3, 20, 4, 1, 0} using binary search peak finding?
medium
A. 3
B. 1
C. 2
D. 0
Solution
Step 1: Identify peak candidates 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: Confirm binary search finds index 2
Binary search compares mid elements and moves left or right until it finds peak at index 2.
Final Answer:
2 -> Option C
Quick Check:
Peak at index 2 with value 20 [OK]
Hint: Peak is local max, here 20 at index 2 [OK]
Common Mistakes:
Choosing first or last element incorrectly
Confusing index with value
Not checking both neighbors
4. Given the following Go code snippet to find a peak element, what is the bug?
func findPeak(nums []int) int {
left, right := 0, len(nums)-1
for left < right {
mid := (left + right) / 2
if nums[mid] < nums[mid+1] {
left = mid + 1
} else {
right = mid - 1
}
}
return left
}
medium
A. The right boundary update should be right = mid, not mid - 1
B. The left boundary update should be left = mid, not mid + 1
C. The loop condition should be left <= right
D. The function should return right instead of left
Solution
Step 1: Analyze the binary search boundary updates
When nums[mid] >= nums[mid+1], peak is at mid or to the left, so right should be set to mid, not mid - 1 to avoid skipping mid.
Step 2: Identify impact of wrong right update
Using right = mid - 1 skips mid, possibly missing the peak element.
Final Answer:
The right boundary update should be right = mid, not mid - 1 -> Option A
Quick Check:
Right boundary must include mid [OK]
Hint: Use right = mid to keep mid in search space [OK]
Common Mistakes:
Setting right = mid - 1 and skipping mid
Changing left incorrectly
Wrong loop condition causing infinite loop
5. You have an array nums := []int{10, 20, 15, 2, 23, 90, 67}. Using binary search to find a peak element, which index will be returned and why?
hard
A. 1, because 20 is a peak greater than neighbors 10 and 15
B. 0, because first element is always a peak
C. 6, because last element is always a peak
D. 5, because 90 is a peak greater than neighbors 23 and 67
Solution
Step 1: Identify all peak candidates in the array
Array: [10, 20, 15, 2, 23, 90, 67]. Peaks are 20 at index 1 and 90 at index 5.
Step 2: Understand binary search behavior
Binary search compares mid and mid+1; it will move towards the higher peak 90 at index 5.
Step 3: Confirm returned index
Binary search will return index 5 where 90 is a peak greater than neighbors 23 and 67.
Final Answer:
5, because 90 is a peak greater than neighbors 23 and 67 -> Option D
Quick Check:
Binary search finds highest local peak at index 5 [OK]
Hint: Binary search finds any peak, often the higher one found first [OK]
Common Mistakes:
Assuming first or last element always peak
Choosing smaller peak incorrectly
Not understanding binary search direction
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.