# 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; } } ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up