从后往前扫描,只需要判断当前值和前一个值的大小
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; } }