当前位置: 首页 > article >正文

LeetCode讲解篇之852. 山脉数组的峰顶索引

文章目录

  • 题目描述
  • 题解思路
  • 题解代码
  • 题目链接

题目描述

在这里插入图片描述

题解思路

我们可以采用二分查找,每次查询区间中点元素与中点下一个元素比较

  • 如果中点元素大于其下一个元素,则表示从中点开始向右是递减趋势,那峰值索引一定小于等于中点,我们可以舍弃中点元素后面的区间
  • 如果中点元素小于其下一个元素,则表示从中点开始向右是递增趋势,那峰值一定大于中点,我们舍弃中点即中点前面的区间

题解代码

func peakIndexInMountainArray(arr []int) int {
    l, r := 0, len(arr) - 1
    ans := 0
    for l <= r {
        m := (l + r) >> 1
        if arr[m] > arr[m + 1] { // m + 1不可能越界,只有当arr元素从左到右不递减才会使m + 1越界,但是题目中说了保证arr是山脉数组,也就是数组元素是先上升后下降的
	        // 递减趋势,说明峰顶索引小于等于m
            ans = m
            r = m - 1
        } else {
        	// 递增趋势,说明峰顶索引大于等于m + 1
            l = m + 1
        }
    }

    return ans
}

题目链接

https://leetcode.cn/problems/peak-index-in-a-mountain-array/description/


http://www.kler.cn/news/338852.html

相关文章:

  • JavaScript代码如何测试?
  • EtherCAT 转 EtherNet/IP, EtherCAT/Ethernet/IP/Profinet/ModbusTCP协议互转工业串口网关
  • matlab碳交易机制下考虑需求响应的综合能源系统优化运行
  • websocket连接异常报错1006
  • 同样的颜色在iOS和Flutter中显示不一样?色域差异解析
  • 【Web】复现n00bzCTF2024 web题解(全)
  • 不同语言的注释和数组
  • 一致性哈希算法解析
  • 动态规划10:174. 地下城游戏
  • 红黑树源代码(进阶与细节解释)
  • rockylinux9安装软件报错
  • 哭晕,腾讯的面试太难了。。。
  • MATLAB|基于多主体主从博弈的区域综合能源系统低碳经济优化调度
  • 《2024 国庆旅游数据洞察:活力与新趋势》
  • python中字符串操作
  • 与ZoomEye功能类似的搜索引擎还有哪些?(渗透课作业)
  • 华为 ModelArts:AI开发者的一站式开发平台深度解析
  • 深度解析内网横向移动及防御策略
  • Windows Ubuntu下搭建深度学习Pytorch训练框架与转换环境TensorRT
  • OJ在线评测系统 后端微服务架构 注册中心 Nacos入门到启动