Java寻找索引最大的那个山峰元素并返回其索引


题目描述

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

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


以下是本篇文章正文内容,下面案例可供参考

解题思路

题目说要返回索引最大的山峰元素,所以想到从后往前遍历,最先找到的山峰元素即为要返回的,此时注意返回的为山峰元素的索引,不是山峰元素的值

考虑三种情况

  • 当遍历的第一个就是山峰元素时,i=a.length,且a[i]的值大于a[i-1]的值(i为索引)
  • 当山峰元素在中间时,注意正确写法为:a[i-1] >= a[i] && a[i-1] >= a[i-2],此时,返回的应该是i-1,不要写成a[i] >= a[i-1] && a[i] >= a[i+1],这样会发=发生数组越界异常!!
  • 当山峰元素为遍历的最后一个时,i=0,且a[i]的值大于a[i+1]的值

所有情况都不符合时,未找到山峰元素,返回-1

代码如下

import java.util.*;


public class Solution {
    /**
     * 寻找最后的山峰
     * @param a int整型一维数组 
     * @return int整型
     */
    public int solve (int[] a) {
        // write code here
         for(int i = a.length-1;i>=0;i--){
             //最后一个数
             if(i == a.length-1 && a[i] >= a[i-1]){
                 return i;
                 //中间的数
             }else if(a[i-1] >= a[i] && a[i-1] >= a[i-2]){
                 return i-1;
                 //第一个数
             }else if(i==0 && a[i] >= a[i+1]){
                 return i;
             }
         }
        return -1;
    }
}

总结

如果本文对你有所帮助,要记得点赞评论哦~
若是有描述不准确的地方,欢迎大家评论区指正,一起学习~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值