def find_peak(nums):
l,r=0,len(nums)-1
while l<r:
mid=(l+r)//2
if nums[mid]>nums[mid+1]: r=mid
else: l=mid+1
return l
public int findPeakElement(int[] nums){
int l=0,r=nums.length-1;
while(l<r){
int mid=(l+r)/2;
if(nums[mid]>nums[mid+1]) r=mid;
else l=mid+1;
} return l;
}
Nearly identical. Move toward higher neighbor.
def find_peak(nums):
l,r=0,len(nums)-1
while l<r:
mid=(l+r)//2
if nums[mid]>nums[mid+1]: r=mid
else: l=mid+1
return l
public int findPeakElement(int[] nums){
int l=0,r=nums.length-1;
while(l<r){
int mid=(l+r)/2;
if(nums[mid]>nums[mid+1]) r=mid;
else l=mid+1;
} return l;
}
1. Move toward higher neighbor 2. Return l