题解 | #寻找峰值#
寻找峰值
http://www.nowcoder.com/practice/1af528f68adc4c20bf5d1456eddb080a
看到题目有两个需要注意的点:
1、找到索引最大的那个山峰元素并返回其索引,考虑从后往前遍历
注意不要越界就行~
2、假设 nums[-1] = nums[n] = -∞,需要对端点做处理
即:
- 在对于数组的最后一个值,只需要考虑是否大于等于前面一个值,代码如(i == n && a[i] >= a[i-1]),直接返回i即可,否则continue进行下一次循环
- 对于数组的第一个值,只需要考虑是否大于后面一个值,代码如(i == 0 && a[i] >= a[i+1]),否则continue进行下一次循环
- 对于其他情况,判断某一个值是否大于等于左右两个值,代码如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;
}
}刷刷题 文章被收录于专栏
刷刷题 活跃活跃脑细胞
查看6道真题和解析
