← Binary Search

Find Peak Element

Medium
Python
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
Java
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;
}

Key Insight

Nearly identical. Move toward higher neighbor.

Python → Java Differences

  • Logic virtually identical
  • // vs /
  • Most similar binary search
Python
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
Java
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;
}

Algorithm Steps

1. Move toward higher neighbor
2. Return l