列表

详情


852. 山脉数组的峰顶索引

符合下列属性的数组 arr 称为 山脉数组

给你由整数组成的山脉数组 arr ,返回任何满足 arr[0] < arr[1] < ... arr[i - 1] < arr[i] > arr[i + 1] > ... > arr[arr.length - 1] 的下标 i

 

示例 1:

输入:arr = [0,1,0]
输出:1

示例 2:

输入:arr = [0,2,1,0]
输出:1

示例 3:

输入:arr = [0,10,5,2]
输出:1

示例 4:

输入:arr = [3,4,5,1]
输出:2

示例 5:

输入:arr = [24,69,100,99,79,78,67,36,26,19]
输出:2

 

提示:

 

进阶:很容易想到时间复杂度 O(n) 的解决方案,你可以设计一个 O(log(n)) 的解决方案吗?

相似题目

寻找峰值

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: int peakIndexInMountainArray(vector<int>& arr) { } };

golang 解法, 执行用时: 8 ms, 内存消耗: 4.5 MB, 提交时间: 2021-06-15 09:45:12

func peakIndexInMountainArray(arr []int) int {
    index, max := 0, math.MinInt16
    for i, num := range arr {
        if num > max {
            max = num
            index = i
        }
    }
    return index
}

golang 解法, 执行用时: 20 ms, 内存消耗: N/A, 提交时间: 2018-08-24 20:32:29

func peakIndexInMountainArray(A []int) int {
    var max = A[0]
    var j = 0
    for i := 1; i < len(A); i++ {
        if max < A[i] {
            max = A[i]
        } else {
            j = i - 1
            break
        }
    }
    return j
}

javascript 解法, 执行用时: 100 ms, 内存消耗: N/A, 提交时间: 2018-08-24 20:27:48

/**
 * @param {number[]} A
 * @return {number}
 */
var peakIndexInMountainArray = function(A) {
    var max = A[0];
    for (var i = 1; i < A.length; i++) {
       if ( A[i] > max ) {
           max = A[i]
       } else {
           return i - 1;
       }
    }
};

python3 解法, 执行用时: 52 ms, 内存消耗: N/A, 提交时间: 2018-08-24 20:15:53

class Solution:
    def peakIndexInMountainArray(self, A):
        """
        :type A: List[int]
        :rtype: int
        """
        return A.index(max(A))

上一题