欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > LeetCode讲解篇之852. 山脉数组的峰顶索引

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

2025/7/3 13:44:45 来源:https://blog.csdn.net/qq_67733273/article/details/142735828  浏览:    关键词:LeetCode讲解篇之852. 山脉数组的峰顶索引

文章目录

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

题目描述

在这里插入图片描述

题解思路

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

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

题解代码

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

题目链接

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com