LeetCode 852. Peak Index in a Mountain Array
考点 | 难度 |
---|---|
Array | Easy |
题目
Let’s call an array arr
a mountain if the following properties hold:
arr.length
>= 3
There exists some i with 0 < i < arr.length
- 1 such that:
arr[0]
< arr[1]
< … arr[i-1]
< arr[i]
arr[i]
> arr[i+1]
> … > arr[arr.length - 1]
Given an integer array arr
that is guaranteed to be a mountain, return any i such that arr[0]
< arr[1]
< … arr[i - 1]
< arr[i]
> arr[i + 1]
> … > arr[arr.length - 1]
.
思路
用binary search找到第一个后一位比前一位小的index。
答案
public int peakIndexInMountainArray(int[] A) {
int lo = 0, hi = A.length - 1;
while (lo < hi) {
int mi = lo + (hi - lo) / 2;
if (A[mi] < A[mi + 1])
lo = mi + 1;
else
hi = mi;
}
return lo;
}