【leetcode - 1】两数之和 easy

假设按照升序排序的数组在预先未知的某个点上进行了旋转。例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] 。

请找出其中最小的元素。

 示例 1:

输入:nums = [3,4,5,1,2]
输出:1
示例 2:

输入:nums = [4,5,6,7,0,1,2]
输出:0
示例 3:

输入:nums = [1]
输出:1

 

使用二分法查找,因为最小值在右侧,考虑和右边最右相比。

class Solution:
    def findMin(self, nums: List[int]) -> int:
        n = len(nums)
        low, high = 0, n - 1
        while low < high:
            mid = (low+high)>>1
            if nums[mid] < nums[high]:
                high = mid
            else:
                low = mid + 1
        return nums[low]

 

posted @ 2020-11-03 16:43  Akassy  阅读(65)  评论(0)    收藏  举报