码迷,mamicode.com
首页 > 其他好文 > 详细

[Lintcode]75. Find Peak Element

时间:2019-02-09 10:45:29      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:ret   script   length   multiple   following   guarantee   from   href   notice   

75. Find Peak Element

Description

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 peak 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)

Challenge
Time complexity O(logN)

Notice
It‘s guaranteed the array has at least one peak.
The array may contain multiple peeks, find any of them.
The array has at least 3 numbers in it.

我的代码

class Solution:
    """
    @param A: An integers array.
    @return: return any of peek positions.
    """
    def findPeak(self, A):
        # write your code here
        r = len(A) - 2
        l = 1
        m = int((l + r) / 2)
        while (l <= r):
            #print(l,m,r)
            if A[m - 1] < A[m] and A[m]> A[m + 1]:
                return m
            else:
                if A[m-1]<A[m]<A[m+1]:
                    l = m+1
                else:
                    r = m-1
                m = int((l+r)/2)

思路

由于一定有峰值 ,所以不用考虑在谷底的时候到底往左还是往右。

[Lintcode]75. Find Peak Element

标签:ret   script   length   multiple   following   guarantee   from   href   notice   

原文地址:https://www.cnblogs.com/siriusli/p/10357044.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!