[Lintcode]75. Find Peak Element
阿新 • • 發佈:2019-02-09
峰值 which href define integer tco may ren 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