• 852. 山脉数组的峰顶索引


    我们把符合下列属性的数组 A 称作山脉:

    • A.length >= 3
    • 存在 0 < i < A.length - 1 使得A[0] < A[1] < ... A[i-1] < A[i] > A[i+1] > ... > A[A.length - 1]

    给定一个确定为山脉的数组,返回任何满足 A[0] < A[1] < ... A[i-1] < A[i] > A[i+1] > ... > A[A.length - 1] 的 i 的值。

    示例 1:

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

    示例 2:

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

    提示:

    1. 3 <= A.length <= 10000
    2. 0 <= A[i] <= 10^6
    3. A 是如上定义的山脉

    二分查找:

    class Solution {
    public:
        int peakIndexInMountainArray(vector<int>& A) {
            int left = 1;
            int right = A.size() - 2;
            while(left <= right) {
                int mid = (left + right) >> 1;
                if(A[mid] > A[mid+1]) {
                    right= mid - 1;
                } else {
                    left = mid + 1;
                }
            }
            return left;
        }
    };

    非二分查找:

    class Solution {
    public:
        int peakIndexInMountainArray(vector<int>& A) {
            int s1=A.size();
            for(int i=0;i<s1-1;i++)
            {
                if(A[i]>A[i+1])//我们只需要找到满足这个条件的点,如果不满足就一直加1,直到找到并返回
                    return i;
            }
            return 1;
        }
    };
  • 相关阅读:
    thinkphp 前台输出
    php的四种定界符
    面试总结
    Git分布式版本控制工具
    Apache Dubbo
    Mybatis03
    Mybatis02
    Mybaitis01
    linux下如何安装webbench
    SpringUtil
  • 原文地址:https://www.cnblogs.com/jj81/p/10660998.html
Copyright © 2020-2023  润新知