zoukankan      html  css  js  c++  java
  • 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;
        }
    };
  • 相关阅读:
    jQuery基础
    Jquery正则表达式公式.例子
    jquery对象与js对象的相互转换
    windows用命令结束进程
    禅道 bug指向为数字问题解决过程
    delphi 触摸 手势
    二维码
    PowerDesigner 生成的脚本取掉双引号
    oracle执行sql文件
    fireDAC oracle
  • 原文地址:https://www.cnblogs.com/jj81/p/10660998.html
Copyright © 2011-2022 走看看