Leetcode刷题记录——162. 寻找峰值

在这里插入图片描述
这题居然可以二分做
如[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)

猜你喜欢

转载自blog.csdn.net/weixin_41545780/article/details/107526784