从后往前扫描,只需要判断当前值和前一个值的大小
import java.util.*;
public class Solution {
/**
* 寻找最后的山峰
* @param a int整型一维数组
* @return int整型
*/
public int solve (int[] a) {
// 判断输入数组是否有效,如果数组仅有一个元素,则返回0
if (a == null || a.length <= 1) {
return 0;
}
int len = a.length;
// 从后往前扫描
// 已知题设a[n] = 负无穷,那么a[n-1]必然大于a[n],因此只需要和前一个数比较,如果符合就返回
// 如果不符合,那么就隐含了a[n-1] < a[n-2],因此对于a[n-2]来说,只需要考虑它的前一个数即可
for(int i = len-1; i > 0; i--) {
if (a[i] >= a[i-1]) {
return i;
}
}
return 0;
}
}
京公网安备 11010502036488号