题目
我们把符合下列属性的数组 A
称作山脉:
A.length >= 3
存在
0 < i < A.length - 1
使得A[0] < A[1] < ... A[i-1] < A[i] > A[i+1] > ... > A[A.length - 1]
给定一个确定为山脉的数组,返回任何满足A[0] < A[1] < ... A[i-1] < A[i] > A[i+1] > ... > A[A.length - 1]
的i
的值
示例1:
1 | 输入:[0,1,0] |
示例2:
1 | 输入:[0,2,1,0] |
示例3:
1 | 输入:arr = [0,10,5,2] |
示例4:
1 | 输入:arr = [3,4,5,1] |
示例5:
1 | 输入:arr = [24,69,100,99,79,78,67,36,26,19] |
提示:
3 <= arr.length <= 10^4
0 <= arr[i] <= 10^6
- 题目数据保证
arr
是一个山脉数组
解法
解法一:
遍历,找到index,是的a[index - 1] < a[index] 并且 a[index] > a[index + 1]
Java
1 | class Solution { |
解法二:
二分查找,每次找到A[i],确认是否A[i] < A[i + 1],不是的话,不断缩小上届和下界,找到最大的i为止。
Java
1 | public int peakIndexInMountainArray(int[] A) { |