解题思路之寻找数组峰值

这篇博客介绍了如何解决寻找数组中最大山峰元素的问题。文章通过实例解析和代码实现,详细阐述了当数组为空和不为空时的解题思路,并提供了一种解决方案。核心在于找到最大值的索引,通过遍历数组比较相邻元素确定最大山峰。最后,作者强调了学习算法的重要性,比喻为建筑大楼,需要逐步积累和实践。
摘要由CSDN通过智能技术生成


前言


学习算法就像去造楼,怎么让建筑设计的好看而且坚实,高端的大楼,恩 那么就少不了算法,我们需要在有限的地基上,造出好看闪耀同时又能抗的住极端天气的大楼,一直坚信用简单的去解开复杂的,写代码也是如此,我这就是我们为什么学习算法。

一、题目?

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

一、示例?

示例1
输入:[2,4,1,2,7,8,4]

返回值:5

二、解题思路

1.这道题是求什么?

从题目上看,这道题主要是输出最大值得索引。抓住重点:最大值,索引。当你理解了这些,那下面我们就可以针对性的去设计思路。

重点:最大值,最大值的索引
输出:最大值得索引

2.设计思路怎么想?

在设计思路前先想一下,什么是最大值?什么是最大值的索引?
当你明白了以上这些之后,下面我们开始正式分析。

1、 当数组a为空时?

数组为空,即索引为 index=0;直接输出就好了

2、 当数组a不为空时?

情况一. 如果a[i] < a[i+1]?
索引最大值:max=i+1;

 if(a[i]<a[i+1]){
                max=i+1;
            }

情况二. 如果a[i] > a[i+1]
索引不变,交换前后值,找出数组最大值

 int temp=a[i];
 a[i]=a[i+1];
 a[i+1]=a[i];

如果不交换值,则会出现以下情况
自测输入 [2,1,4,3]
输出 2
因此,在此步骤需要进行交换值

完整代码

public int solve (int[] a) {
        int max=0;
        if(a.length<=1 && a==null ){
            max= 0;
        }
        for(int i=0;i<a.length-1;i++){
            if(a[i]<a[i+1]){
                max=i+1;
            }
        }
        return max;
    }
}

总结

学习算法就像盖楼,先易后难,循序渐进。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值