lintcode-medium-Find Peak Element

Posted 哥布林工程师

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lintcode-medium-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.

 

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

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

 

class Solution {
    /**
     * @param A: An integers array.
     * @return: return any of peek positions.
     */
    public int findPeak(int[] A) {
        // write your code here
        if(A == null || A.length == 0)
            return 0;
        
        int left = 1;
        int right = A.length - 2;
        
        while(left < right - 1){
            
            int mid = left + (right - left) / 2;
        
            if(A[left] <= A[mid] && A[mid] <= A[right])
                left = mid;
            else if(A[left] >= A[mid] && A[mid] >= A[right])
                right = mid;
            else if(A[left] <= A[mid] && A[right] >= A[mid])
                right--;
            else
                left++;
            
        }
        
        if(A[left] > A[right])
            return left;
        else
            return right;
    }
}

 

以上是关于lintcode-medium-Find Peak Element的主要内容,如果未能解决你的问题,请参考以下文章

lintcode-medium-Find Minimum in Rotated Sorted Array II

峰识别 峰面积计算 peak detection peak area 源代码 下载

峰识别 峰面积计算 peak detection peak area 源代码 下载

162. Find Peak Element

162. Find Peak Element

LC.162.Find Peak Element