这题居然可以二分做
如[1,2,3,1]
mid == 1
nums[mid] = 2 < nums[mid+1] = 3
则 end = 1
start = mid + 1 = 2
在nums【2,3】找
此时mid = 2 nums[mid] = 3
nums[mid] = 3 > nums[mid + 1] =2
end = 2 = start
此时找到了
class Solution:
def findPeakElement(self, nums: List[int]) -> int:
if len(nums) <= 1:
return 0
elif len(nums) == 2:
return 0 if nums[0]>nums[1] else 1
start = 0
end = len(nums) - 1
while start < end:
mid = start + ((end-start)>>1)
if nums[mid] > nums[mid + 1]:
end = mid
else:
start = mid + 1
return start#self.erfen(0,len(nums)-1,nums)