---
# System prepended metadata

title: 0162. Find Peak Element
tags: [Leetcode, FaceBook, Binary Search, Medium]

---

# 0162. Find Peak Element
###### tags: `Leetcode` `Medium` `Binary Search` `FaceBook`
Link: https://leetcode.com/problems/find-peak-element/
## 思路
由于最左边和最右边都是无穷小，所以binary search只要找到的值比他的下一个值大，就往右搜，否则就往左搜
之所以这样写可以保证mid+1在范围里是因为l=r的时候就会退出循环，所以l最多=r-1，而r的范围在合法范围里，所以不会有问题，所以r要在合法范围内
但这样搜寻的范围变成了左闭右开区间0到nums.length-1，为什么还是能找到正确答案呢，因为在其他情况下l的范围是0到nums.length，但这题l的范围只有0到nums.length-1，也就是说它一定能找得到答案，**只有一定能找得到答案的时候才可以把end从nums.length改成nums.length-1**
## Code
```java=
class Solution {
    public int findPeakElement(int[] nums) {
        int l = 0;
        int r = nums.length-1;
        while(l<r){
            int mid = l+(r-l)/2;
            if(nums[mid]<nums[mid+1]){
                l = mid+1;
            }
            else{
                r = mid;
            }
        }
        return l;
    }
}
```