1. 首页
  2. LeetCode 刷题网

LeetCode 162. 寻找峰值

题目描述

难度:Middle

相关话题:数组二分查找

峰值元素是指其值大于左右相邻值的元素。

给定一个输入数组 nums ,其中 nums[i] ≠ nums[i+1] ,找到峰值元素并返回其索引。

数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。

你可以假设 nums[-1] = nums[n] = -∞

示例 1:

输入: nums = [1,2,3,1]
输出: 2
解释:3 是峰值元素,你的函数应该返回其索引 2。

示例2:

输入: nums = [1,2,1,3,5,6,4]
输出: 1 或 5
解释: 你的函数可以返回索引 1,其峰值元素为 2;
    或者返回索引 5, 其峰值元素为 6。

说明:

你的解法应该是O (logN )** 时间复杂度的。

/**
 * @ Javascript中文网 - 前端进阶资源教程 https://www.javascriptc.com/
 * @param {number[]} nums
 * @return {number}
 */
var findPeakElement = function(nums) {

    // for(let i=1;i<nums.length;i++){
    //   if(nums[i]<nums[i-1])return i-1
    // }
    // return nums.length-1

      var n=nums.length;
    var l=0, r=n-1;
    while(l<r) {
        var mid = Math.floor((l+r)/2);
        if(nums[mid]<nums[mid+1]) {
            l=mid+1;
        } else {
            r=mid;
        }
    }
    return l;
};

看完两件小事

如果你觉得这篇文章对你挺有启发,我想请你帮我两个小忙:

  1. 关注我们的 GitHub 博客,让我们成为长期关系
  2. 把这篇文章分享给你的朋友 / 交流群,让更多的人看到,一起进步,一起成长!
  3. 关注公众号 「IT平头哥联盟」,公众号后台回复「资源」 免费领取我精心整理的前端进阶资源教程

JS中文网是中国领先的新一代开发者社区和专业的技术媒体,一个帮助开发者成长的社区,目前已经覆盖和服务了超过 300 万开发者,你每天都可以在这里找到技术世界的头条内容。欢迎热爱技术的你一起加入交流与学习,JS中文网的使命是帮助开发者用代码改变世界

本文著作权归作者所有,如若转载,请注明出处

转载请注明:文章转载自「 Js中文网 · 前端进阶资源教程 」https://www.javascriptc.com

标题:LeetCode 162. 寻找峰值

链接:https://www.javascriptc.com/4522.html

« 独家指南系列|Android端SQLite的浅尝辄止
7React Hooks»
Flutter 中文教程资源

相关推荐

QR code