O(n) approach
public class Solution {
public int findPeakElement(int[] nums) {
int peak = nums[0];
for (int i=1; i<nums.length; i++) {
if (nums[i] > peak) peak = nums[i];
if (nums[i] < peak) return i-1;
}
return nums.length-1;
}
}
O(logn) approach (binary search)
public class Solution {
public int findPeakElement(int[] nums) {
int low=0, high=nums.length-1, mid;
while (low < high) {
mid = (low+high)/2;
// peak on the right b/c num[n] = -∞
if (nums[mid] < nums[mid+1]) low = mid + 1;
// peak on the left include mid b/c num[-1] = -∞
else high = mid;
}
return low;
}
}