看到题目有两个需要注意的点:
1、找到索引最大的那个山峰元素并返回其索引,考虑从后往前遍历
注意不要越界就行~
2、假设 nums[-1] = nums[n] = -∞,需要对端点做处理
即:

  1. 在对于数组的最后一个值,只需要考虑是否大于等于前面一个值,代码如(i == n && a[i] >= a[i-1]),直接返回i即可,否则continue进行下一次循环
  2. 对于数组的第一个值,只需要考虑是否大于后面一个值,代码如(i == 0 && a[i] >= a[i+1]),否则continue进行下一次循环
  3. 对于其他情况,判断某一个值是否大于等于左右两个值,代码如a[i] >= a[i-1] && a[i] <= a[i+1]
import java.util.*;


public class Solution {
    /**
     * 寻找最后的山峰
     * @param a int整型一维数组 
     * @return int整型
     */
    public int solve (int[] a) {

        if (a == null || a.length == 0) {
            return 0;
        }

        int lenIndex = a.length - 1;

        for (int i = lenIndex; i >= 0; i--) {

            if (i == lenIndex) {

                if (a[i] >= a[i-1]) {
                    return i;
                }

                continue;
            } 

            if (i == 0) {

                if (a[i] >= a[i+1]) {
                    return i;
                }

                continue;
            }

            if (a[i] >= a[i-1] && a[i] >= a[i+1]) {
                return i;
            }
        }

        return -1;
    }
}