Find peak element
题目描述
解题方法
Solution
class Solution(object):
def findPeakElement(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
length = len(nums)
if length == 1:
return 0
if length == 2:
return 0 if nums[0] > nums[1] else 1
start = 0
end = length - 1
while start + 1 < end:
mid = start + (end-start)/2
if nums[mid] > nums[mid-1] and nums[mid] > nums[mid+1]:
return mid
elif nums[mid] <= nums[mid-1]:
end = mid
elif nums[mid] <= nums[mid+1]:
start = mid
if start == 0 or (nums[start] > nums[start-1] and nums[start] > nums[start+1]):
return start
if end == length - 1 or (nums[end] > nums[end-1] and nums[end] > nums[end+1]):
return end
return -1
Reference