159. 寻找旋转排序数组中的最小值

159. 寻找旋转排序数组中的最小值

中文English

假设一个排好序的数组在其某一未知点发生了旋转(比如0 1 2 4 5 6 7 可能变成4 5 6 7 0 1 2)。你需要找到其中最小的元素。

样例

样例 1:

输入:[4, 5, 6, 7, 0, 1, 2]
输出:0
解释:
数组中的最小值为0

样例 2:

输入:[2,1]
输出:1
解释:
数组中的最小值为1

注意事项

你可以假设数组中不存在重复元素。

输入测试数据 (每行一个参数)如何理解测试数据?
class Solution:
    """
    @param nums: a rotated sorted array
    @return: the minimum number in the array
    """
    def findMin(self, nums):
        # write your code here
        start, end = 0, len(nums) - 1 
        
        while start + 1 < end:
       #第一种情况,如果直接是升序数组的话,直接返回
if (nums[start] < nums[end]): return nums[start] mid = (start + end) // 2 #说明左边是升序的,最小值肯定不在左边,上面已经判断过了 if (nums[start] < nums[mid]): start = mid + 1 else: #说明右边是升序的,最小值在左边 end = mid if (nums[start] < nums[end]): return nums[start] else: return nums[end]

 

posted @ 2020-06-25 14:28  风不再来  阅读(161)  评论(0编辑  收藏  举报