题目描述
山峰元素是指其值大于或等于左右相邻值的元素。
给定一个输入数组nums,任意两个相邻元素值不相等,数组可能包含多个山峰。找到索引最大的那个山峰元素并返回其索引。
假设 nums[-1] = nums[n] = -∞。
以下是本篇文章正文内容,下面案例可供参考
解题思路
题目说要返回索引最大的山峰元素,所以想到从后往前遍历,最先找到的山峰元素即为要返回的,此时注意返回的为山峰元素的索引,不是山峰元素的值
考虑三种情况
- 当遍历的第一个就是山峰元素时,
i=a.length
,且a[i]
的值大于a[i-1]
的值(i为索引) - 当山峰元素在中间时,注意正确写法为:
a[i-1] >= a[i] && a[i-1] >= a[i-2]
,此时,返回的应该是i-1
,不要写成a[i] >= a[i-1] && a[i] >= a[i+1]
,这样会发=发生数组越界异常!! - 当山峰元素为遍历的最后一个时,
i=0
,且a[i]
的值大于a[i+1]
的值
所有情况都不符合时,未找到山峰元素,返回-1
代码如下
import java.util.*;
public class Solution {
/**
* 寻找最后的山峰
* @param a int整型一维数组
* @return int整型
*/
public int solve (int[] a) {
// write code here
for(int i = a.length-1;i>=0;i--){
//最后一个数
if(i == a.length-1 && a[i] >= a[i-1]){
return i;
//中间的数
}else if(a[i-1] >= a[i] && a[i-1] >= a[i-2]){
return i-1;
//第一个数
}else if(i==0 && a[i] >= a[i+1]){
return i;
}
}
return -1;
}
}
总结
如果本文对你有所帮助,要记得点赞评论哦~
若是有描述不准确的地方,欢迎大家评论区指正,一起学习~