题解 | #寻找峰值#

寻找峰值

http://www.nowcoder.com/practice/1af528f68adc4c20bf5d1456eddb080a

从后往前扫描,只需要判断当前值和前一个值的大小

import java.util.*;


public class Solution {
    /**
     * 寻找最后的山峰
     * @param a int整型一维数组 
     * @return int整型
     */
    public int solve (int[] a) {
        // 判断输入数组是否有效,如果数组仅有一个元素,则返回0
        if (a == null || a.length <= 1) {
            return 0;
        }
        int len = a.length;
        // 从后往前扫描
        // 已知题设a[n] = 负无穷,那么a[n-1]必然大于a[n],因此只需要和前一个数比较,如果符合就返回
        // 如果不符合,那么就隐含了a[n-1] < a[n-2],因此对于a[n-2]来说,只需要考虑它的前一个数即可
        for(int i = len-1; i > 0; i--) {
            if (a[i] >= a[i-1]) {
                return i;
            }
        }
        return 0;
    }
}
全部评论

相关推荐

05-12 17:28
已编辑
门头沟学院 硬件开发
ldf李鑫:不说公司名祝你以后天天遇到这样的公司
点赞 评论 收藏
分享
球Offer上岸👑:可能是大环境太差了 太卷了 学历也很重要 hc也不是很多 所以很难
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务