首页 > 其他 > 详细

[Lintcode]75. Find Peak Element

时间:2019-02-09 10:04:11      阅读:199      评论:0      收藏:0      [点我收藏+]

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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!