162. Find Peak Element
Intitution
Complexity
Space Complexity
Time Complexity
Code
public int findPeakElement(int[] nums) {
int left = 0, right = nums.length - 1;
while (left <= right) {
int mid = (left + right) >> 1;
// Check if nums[mid] is greater than its left and right neighbors
boolean isGreaterThanLeft = (mid - 1 < 0 || nums[mid] > nums[mid - 1]);
boolean isGreaterThanRight = (mid + 1 >= nums.length || nums[mid] > nums[mid + 1]);
// If both conditions hold, we found a peak
if (isGreaterThanLeft && isGreaterThanRight) {
return mid;
}
// If increasing toward the right, move right
if (!isGreaterThanRight) {
left = mid + 1;
} else { // Else move left
right = mid - 1;
}
}
// Should never reach here if input is valid
return -1;
}
Last updated