题解 | #寻找峰值#

寻找峰值

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;
    }
}
全部评论

相关推荐

09-25 12:07
门头沟学院 Java
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
08-20 19:41
那一天的Java_J...:简历完全流水账,学生思维很严重,还有很大的优化空间,可以多看看牛客的简历。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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