剑指 Offer II 069. 山峰数组的顶部模拟 / 二分

Posted 幽殇默

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指 Offer II 069. 山峰数组的顶部模拟 / 二分相关的知识,希望对你有一定的参考价值。


https://leetcode-cn.com/problems/B1IidL/
O(n)的方法

class Solution {
public:
    int peakIndexInMountainArray(vector<int>& arr)
    {
        int n=arr.size()-1;
        int ans=0;
        for(int i=1;i<=n-1;i++)
        {
            if(arr[i]>arr[i-1]&&arr[i]>arr[i+1]) ans=i;
        }
        if(arr[0]>arr[1])   ans=0;
        if(arr[n]>arr[n-1]) ans=n;
        return ans;
    }
};

二分解法:

class Solution {
public:
    int peakIndexInMountainArray(vector<int>& arr)
    {
        int l=0,r=arr.size()-1;
        while(l<r)
        {
            int mid=l+r+1>>1;
            if(arr[mid]<arr[mid+1]) l=mid;
            else r=mid-1;
        }
        return l+1;
    }
};

以上是关于剑指 Offer II 069. 山峰数组的顶部模拟 / 二分的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode剑指 Offer II 069. 山峰数组的顶部(C++)

剑指 Offer II 069. 山峰数组的顶部模拟 / 二分

LeetCode 剑指 Offer II 069. 山峰数组的顶部(三分) / 38. 外观数列 / 282. 给表达式添加运算符

剑指Offer II 069 山峰数组的顶部[二分法] HERODING的LeetCode之路

LeetCode刷题office II 069-简单-山峰数组的顶部

剑指 Offer 56 - II. 数组中数字出现的次数 II(二进制求和模运算)