因为要求索引值最大的峰值,所以从末尾遍历数组,找到的第一个符合条件的值即索引最大。 问题只剩下对数组左右端点的处理,而当处于左右端点时已经满足条件,即i + 1 == n时条件已经满足,不用再判断a[i] >= a[i+1]。i-1 == 0时同理。
public int solve (int[] a) {
int n = a.length;
int i = n - 1;
for(; i >= 0; i--) {
if((i + 1 == n || a[i] >= a[i+1]) && (i - 1 == 0 || a[i] >= a[i-1]))
return i;
}
return -1;
}
京公网安备 11010502036488号