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 is binary search useful for finding a peak element?
Binary search helps find a peak element in O(log n) time by comparing middle elements and deciding which half to search next, instead of checking all elements.
Click to reveal answer
intermediate
In the binary search for a peak element, if nums[mid] < nums[mid + 1], which side do we search next?
We search the right half because a peak must exist there since nums[mid + 1] is greater than nums[mid].
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
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, so we return its index.
Click to reveal answer
What defines a peak element in an array?
AAn element greater than its neighbors
BAn element smaller than its neighbors
CThe first element only
DThe last element only
✗ Incorrect
A peak element is greater than its neighbors.
If nums[mid] < nums[mid + 1], where should the binary search continue?
ALeft half
BRight half
CAt mid only
DStop search
✗ Incorrect
The peak must be in the right half because nums[mid + 1] is greater.
What is the time complexity of the binary search approach to find a peak element?
AO(log n)
BO(1)
CO(n log n)
DO(n)
✗ Incorrect
Binary search halves the search space each time, so O(log n).
Which of these is a valid stopping condition in peak element binary search?
AWhen low > high
BWhen mid == 0
CWhen mid == length - 1
DWhen low == high
✗ Incorrect
When low equals high, the single element is a peak.
Can there be multiple peak elements in an array?
AOnly if array is sorted
BNo
CYes
DOnly if array is reversed
✗ Incorrect
Multiple peaks can exist; binary search finds any one peak.
Explain how binary search is used to find a peak element in an array.
Think about how the array is divided and how the peak is guaranteed in one half.
You got /4 concepts.
Describe the conditions that make an element a peak in an array.
Consider both middle and edge elements.
You got /4 concepts.
Practice
(1/5)
1. What is a peak element in an array when using binary search to find it?
easy
A. An element equal to its neighbors
B. The smallest element in the array
C. The first element of the array
D. An element greater than 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 an edge).
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 greater than its neighbors -> Option D
Quick Check:
Peak element = element greater than neighbors [OK]
Hint: Peak element is bigger than neighbors, not smallest [OK]
Common Mistakes:
Confusing peak with smallest element
Thinking peak must be at array start
Assuming peak equals neighbors
2. Which Rust code snippet correctly initializes the binary search boundaries for finding a peak element in a vector nums?
easy
A. let (mut left, mut right) = (0, nums.len() - 1);
B. let (left, right) = (1, nums.len());
C. let (mut left, mut right) = (1, nums.len() - 1);
D. let (left, right) = (0, nums.len());
Solution
Step 1: Identify correct boundary initialization
Binary search on array indices starts at 0 and ends at length - 1 because indexing is zero-based.
Step 2: Check mutability and correct tuple assignment
We need mutable variables for left and right to update during search, so use mut and assign (0, nums.len() - 1).
Final Answer:
let (mut left, mut right) = (0, nums.len() - 1); -> Option A
Quick Check:
Start=0, End=length-1, mutable [OK]
Hint: Start at 0, end at length-1 with mut for binary search [OK]
Common Mistakes:
Using length instead of length - 1 as right boundary
Not declaring variables as mutable
Starting from 1 instead of 0
3. What will be the output index of the peak element for the input array nums = vec![1, 3, 2, 1] using binary search peak finding?
medium
A. 0
B. 1
C. 2
D. 3
Solution
Step 1: Analyze the array and identify peak candidates
Array is [1, 3, 2, 1]. Element at index 1 is 3, which is greater than neighbors 1 and 2.
Step 2: Confirm binary search would find index 1
Binary search compares mid with neighbors and moves left or right. Mid initially at index 1 or 2 will find 3 as peak.
Final Answer:
1 -> Option B
Quick Check:
Peak element 3 at index 1 [OK]
Hint: Peak is local max, here 3 at index 1 [OK]
Common Mistakes:
Choosing first or last index incorrectly
Confusing peak with any max element
Ignoring neighbors comparison
4. Identify the bug in this Rust code snippet for finding a peak element using binary search:
let mut left = 0;
let mut right = nums.len();
while left < right {
let mid = (left + right) / 2;
if nums[mid] < nums[mid + 1] {
left = mid + 1;
} else {
right = mid;
}
}
return left;
medium
A. Right boundary should be nums.len() - 1
B. Mid calculation causes overflow
C. Comparison should be nums[mid] > nums[mid + 1]
D. Loop condition should be left <= right
Solution
Step 1: Check boundary initialization
Right boundary is set to nums.len(), which is out of valid index range (max index is len - 1).
Step 2: Understand impact on mid + 1 access
Accessing nums[mid + 1] can cause out-of-bounds panic if mid is at last index due to wrong right boundary.
Final Answer:
Right boundary should be nums.len() - 1 -> Option A
Quick Check:
Right = len - 1 to avoid out-of-bounds [OK]
Hint: Right boundary must be last valid index (len-1) [OK]
Common Mistakes:
Setting right to length instead of length - 1
Ignoring out-of-bounds access on mid + 1
Changing loop condition incorrectly
5. Given a vector nums = vec![1, 2, 3, 1, 5, 6, 4], which index will the binary search peak finding algorithm return and why?
hard
A. 2, because 3 is a peak before the drop
B. 3, because 1 is the middle element
C. 5, because 6 is a peak after the drop
D. 6, because 4 is the last element
Solution
Step 1: Identify all peak elements in the array
Array: [1, 2, 3, 1, 5, 6, 4]. Peaks are elements greater than neighbors: 3 at index 2 and 6 at index 5.