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;
    }
}

记录第一次写题解

全部评论
你这个方法牛客报下标越界
1 回复 分享
发布于 2021-09-04 16:46
i=1时,a[i-2]越界
1 回复 分享
发布于 2021-09-17 21:59
改为else if(a[i]>a[i-1]&&a[i]>a[i+1]) return i;
1 回复 分享
发布于 2021-09-17 22:00

相关推荐

蔡徐kun:还行,早挂晚挂都是挂。早点挂进池子等别人捞你
点赞 评论 收藏
分享
评论
4
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务