leetcode 162. Find Peak Element

A peak element is an element that is greater than its neighbors.

Given an input array nums, where nums[i] ≠ nums[i+1], find a peak element and return its index.

The array may contain multiple peaks, in that case return the index to any one of the peaks is fine.

You may imagine that nums[-1] = nums[n] = -∞.

Example 1:

Input: nums = [1,2,3,1]
Output: 2
Explanation: 3 is a peak element and your function should return the index number 2.
Example 2:

Input: nums = [1,2,1,3,5,6,4]
Output: 1 or 5
Explanation: Your function can return either index number 1 where the peak element is 2,
or index number 5 where the peak element is 6.

给出一个数组,让找到其中的峰值
峰值:比左右邻居的值大

而且如果有多个峰值,返回一个即可

思路:
判断峰值:和左右比较,比左右都大
如果是从左到右遍历数组,相当于左边已经比较过,只需要比较右边

这时候假如有一个smaller的boolean数组,代表前一元素比后一元素小
因为题目中说nums[-1] = -∞,所以nums[-1] < nums[0], smaller的第一个元素是true
Input: nums = [1,2,1,3,5,6,4]
这时候smaller =[T, T, F, T, T, T, F]
可以看到峰值出现在[T, F]出现的地方

而题目中只要求返回一个峰值,所以只需要返回第一个F出现的地方,而刚开始一定是T的
所以只需要返回第一个nums[i] > nums[i+1]的index(i)

//0ms, faster than 100% (current time)
    public int findPeakElement(int[] nums) {
        
        for (int i = 0; i < nums.length - 1; i++) {
            if (nums[i] > nums[i + 1]) {
                return i;
            }            
        }
        
        return nums.length - 1;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝羽飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值