https://leetcode.com/problems/find-peak-element/
Approach 1: Linear Scan1
2
3
4
5
6
7
8class Solution {
    public int findPeakElement(int[] nums) {
        for(int i=0;i<nums.length-1;i++){
            if(nums[i]>nums[i+1]) return i;
        }
        return nums.length-1;
    }
}
Approach 2: Recursive Binary Search1
2
3
4
5
6
7
8
9
10
11class Solution {
    public int findPeakElement(int[] nums) {
        return search(nums,0,nums.length-1);
    }
    public int search(int[] nums,int l,int r){
        if(l==r) return l;
        int m=l+(r-l)/2;
        if(nums[m]>nums[m+1]) return search(nums,l,m);
        return search(nums,m+1,r);
    }
}
Approach 3: Iterative Binary Search1
2
3
4
5
6
7
8
9
10
11class Solution {
    public int findPeakElement(int[] nums) {
        int l=0,r=nums.length-1;
        while(l<r){
            int m=l+(r-l)/2;
            if(nums[m]>nums[m+1]) r=m;
            else l=m+1;
        }
        return l;
    }
}