zoukankan      html  css  js  c++  java
  • 【Lintcode】075.Find Peak Element

    题目:

    There is an integer array which has the following features:

    • The numbers in adjacent positions are different.
    • A[0] < A[1] && A[A.length - 2] > A[A.length - 1].

    We define a position P is a peek if:

    A[P] > A[P-1] && A[P] > A[P+1]
    

    Find a peak element in this array. Return the index of the peak.

    Example

    Given [1, 2, 1, 3, 4, 5, 7, 6]

    Return index 1 (which is number 2) or 6 (which is number 7)

    题解:

    class Solution {
    public:
        /**
         * @param A: An integers array.
         * @return: return any of peek positions.
         */
        int findPeak(vector<int> A) {
            if (A.size() < 3) {
                return -1;
            }
            
            int n = A.size();
            int start = 1;
            int end = n - 1;
            while (start < end - 1) {
                int mid = start + (end - start) / 2;
                if (A[mid] > A[mid - 1] && A[mid] > A[mid + 1]) {
                    return mid;
                } else if (A[mid] > A[mid-1]) {
                    start = mid;
                } else {
                    end = mid;
                }
            }
            
            if (A[start] > A[start + 1]) {
                return start;
            } else if (A[end] > A[end - 1]) {
                return end;
            }
            
            return -1;
        }
    };
  • 相关阅读:
    winform 计算器
    js 特效代码网址
    js 动图效果
    计算器 练习
    html frameset 练习
    SQL 仓库管理练习题
    数据库存取图片
    数据库查询Database中的表
    面向对象练习
    C#函数与SQL储存过程
  • 原文地址:https://www.cnblogs.com/Atanisi/p/6822290.html
Copyright © 2011-2022 走看看