Challenge - 5 Problems
Peak Element Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate2:00remaining
Find Peak Element Output
What is the output index of the peak element for the given array using the binary search approach?
DSA C++
int findPeakElement(vector<int>& nums) { int left = 0, right = nums.size() - 1; while (left < right) { int mid = left + (right - left) / 2; if (nums[mid] > nums[mid + 1]) { right = mid; } else { left = mid + 1; } } return left; } vector<int> nums = {1, 3, 20, 4, 1, 0}; int peakIndex = findPeakElement(nums); cout << peakIndex;
Attempts:
2 left
💡 Hint
Check where the element is greater than its next neighbor.
✗ Incorrect
The binary search narrows down to the peak element by comparing mid element with its next element. Since 20 at index 2 is greater than 4 at index 3, the peak is at index 2.
❓ Predict Output
intermediate2:00remaining
Find Peak Element Output with Multiple Peaks
What is the output index of the peak element for the array with multiple peaks using the binary search approach?
DSA C++
int findPeakElement(vector<int>& nums) { int left = 0, right = nums.size() - 1; while (left < right) { int mid = left + (right - left) / 2; if (nums[mid] > nums[mid + 1]) { right = mid; } else { left = mid + 1; } } return left; } vector<int> nums = {1, 2, 3, 1, 2, 1}; int peakIndex = findPeakElement(nums); cout << peakIndex;
Attempts:
2 left
💡 Hint
Binary search finds any peak, not necessarily the first or last.
✗ Incorrect
The binary search finds index 2 where nums[2] = 3 is a peak (greater than neighbors 2 and 1).
🧠 Conceptual
advanced2:00remaining
Why Binary Search Works for Peak Element?
Why does the binary search approach always find a peak element in an unsorted array?
Attempts:
2 left
💡 Hint
Think about the direction where the array is increasing or decreasing.
✗ Incorrect
If nums[mid] < nums[mid+1], a peak must exist on the right side; else, on the left side. This guarantees finding a peak.
🔧 Debug
advanced2:00remaining
Identify the Bug in Peak Element Code
What error will this code cause when finding a peak element?
DSA C++
int findPeakElement(vector<int>& nums) { int left = 0, right = nums.size() - 1; while (left <= right) { int mid = left + (right - left) / 2; if (nums[mid] > nums[mid + 1]) { right = mid - 1; } else { left = mid + 1; } } return left; }
Attempts:
2 left
💡 Hint
Check the condition when mid is at the last index.
✗ Incorrect
When mid is at the last index, nums[mid + 1] accesses out-of-bounds causing runtime error.
🚀 Application
expert3:00remaining
Find Peak Element in Circular Array
Given a circular array where the end connects to the start, which approach correctly finds a peak element?
Attempts:
2 left
💡 Hint
Think about how to handle the circular nature in index calculation.
✗ Incorrect
Using modulo operator handles wrap-around, allowing binary search to find peak in circular array.