NC107 寻找峰值-java简单易懂
寻找峰值
http://www.nowcoder.com/questionTerminal/1af528f68adc4c20bf5d1456eddb080a
看到题目有两个需要注意的点: 1、找到索引最大的那个山峰元素并返回其索引,考虑从后往前遍历 注意不要越界就行~ 2、假设 nums[-1] = nums[n] = -∞,需要对端点做处理 即:在对于数组的最后一个值,只需要考虑是否大于等于前面一个值,代码如:(i == n - 1 && a[i] >= a[i - 1]),对于数组的第一个值,只需要考虑是否大于后面一个值,代码如:(i == 0 && a[i] >= a[i + 1]),对于其他情况,判断某一个值是否大于等于左右两个值,代码如:a[i - 1] <= a[i] && a[i] >= a[i + 1]
import java.util.*;
public class Solution {
/**
* 寻找最后的山峰
* @param a int整型一维数组
* @return int整型
*/
public int solve (int[] a) {
// write code here
int n = a.length;
for (int i = n - 1; i >= 0; i--) {
if ((i == n - 1 && a[i] >= a[i - 1]) || (i == 0 && a[i] >= a[i + 1])) {
return i;
} else if (a[i - 1] <= a[i] && a[i] >= a[i + 1]) {
return i;
}
}
return -1;
}
}
记录第一次写题解