zoukankan      html  css  js  c++  java
  • 寻求峰值(NC107)

    题目描述

    山峰元素是指其值大于或等于左右相邻值的元素。给定一个输入数组nums,任意两个相邻元素值不相等,数组可能包含多个山峰。找到索引最大的那个山峰元素并返回其索引。

    假设 nums[-1] = nums[n] = -∞。

    牛客网:NC107括号序列

    示例1

    输入

    [2,4,1,2,7,8,4]
    

    输出

    5
    

    解题思路

    首先题目提到山峰元素是大于或等于左右相邻值的元素相邻元素值不相等,并且nums[-1] = nums[n] = -∞。最终需要的是山峰的最大索引,本题目我们可以从后往前遍历,需要值得注意的是,数组两个边界以外都是-∞,我们在判断左边第一个元素的时候,只需要从右往左第一个元素大于从右往左第二个元素即可。若不满足上述条件,就要从右往左遍历,即a[i-1]<=a[i]&&a[i+1]<=a[i]。还有一种情况,山峰元素位[7,6,5,4,3,2,1],此时由可以得到,第0号元素符合条件,直接返回0。

    代码实现

    public int solve (int[] a) {
        if(a[a.length-2]<=a[a.length-1]) return a.length-1;
        for (int i = a.length-2; i>0;i--) {
            if (a[i-1]<=a[i]&&a[i+1]<=a[i]){
                return i;
            }
        }
        return 0;
    }
    
  • 相关阅读:
    hdu 2089 不要62(初学数位DP)
    字符串与整数之间的转换
    字符串之判断重复字符串
    字符串之全排列
    字符串之移位
    链表
    STL之map
    海量数据处理
    字符串之strchr
    字符串之_strncat
  • 原文地址:https://www.cnblogs.com/ilyar1015/p/14753482.html
Copyright © 2011-2022 走看看