852. 山脉数组的峰顶索引

Posted lgz0921

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了852. 山脉数组的峰顶索引相关的知识,希望对你有一定的参考价值。

题目链接:https://leetcode-cn.com/problems/peak-index-in-a-mountain-array/

思路:二分一个位置,比较该位置的数与它左右的位置的数的大小。比较方法:见代码里面的两个if语句即可~~~~

上代码:

class Solution {
    fun peakIndexInMountainArray(arr: IntArray): Int {
        var l = 0
        var r = arr.size - 1
        while (l < r) {
            val mid = l + r shr 1
            if (mid + 1 < arr.size && arr[mid] > arr[mid + 1]) {
                r = mid
            }
            if (mid - 1 >= 0 && arr[mid] > arr[mid - 1]) {
                l = mid
            }
        }
        return l
    }
}

仔细想一下,其实不需要太多细节~~,上面的是对的,下面这个减少了判断细节的写法也是对的哦~~~~

上代码:

class Solution {
    fun peakIndexInMountainArray(arr: IntArray): Int {
        var l = 0
        var r = arr.size - 1
        while (l < r) {
            val mid = l + r shr 1
            if (arr[mid] > arr[mid + 1]) {
                r = mid
            } else {
                l = mid + 1
            }
        }
        return l
    }
}

 

以上是关于852. 山脉数组的峰顶索引的主要内容,如果未能解决你的问题,请参考以下文章

leetcode-852-山脉数组的峰顶索引

Leetcode刷题Python852. 山脉数组的峰顶索引

[LeetCode] 852. 山脉数组的峰顶索引

Python描述 LeetCode 852. 山脉数组的峰顶索引

852. 山脉数组的峰顶索引二分 C++

LeetCode——852. 山脉数组的峰顶索引(Java)