本文主要是介绍【二分查找】 LCR 069. 山脉数组的峰顶索引,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
LCR 069. 山脉数组的峰顶索引
解题思路
初始化两个指针 l 和 r 分别指向数组的起始和结束位置。
使用 while 循环,当 l 小于 r 时,进行以下步骤:
a. 计算中间索引 mid,通过 (r - l) / 2 + l 的方式获得。
b. 检查 arr[mid] 和 arr[mid + 1] 的关系:
如果 arr[mid] < arr[mid + 1],说明当前处于上坡部分,峰值一定在 mid 的右侧。因此,将 l 更新为 mid + 1。
如果 arr[mid] >= arr[mid + 1],说明当前处于下坡部分或峰值可能就是 mid。因此,将 r 更新为 mid。
循环结束时,r 的值就是峰值的索引
class Solution {public int peakIndexInMountainArray(int[] arr) {int l = 1;int r = arr.length - 1;while(l < r){int mid = (r - l) / 2 + l;if(arr[mid] < arr[mid + 1]){// 说明 是上坡 缩小左边界l =mid + 1;}else{r = mid;// 说明遇到了下坡}}return r;}
}
这篇关于【二分查找】 LCR 069. 山脉数组的峰顶索引的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!