【二分查找】 LCR 069. 山脉数组的峰顶索引

发布时间:2024年01月19日

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;
    }
}
文章来源:https://blog.csdn.net/qq_44653420/article/details/135695405
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。