#coding:utf-8 # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param nums int整型一维数组 # @return int整型 # class Solution: def minNumberInRotateArray(self , nums ): # write code here #init n = len(nums) #process if n <= 0: return 0 left = 0 right = n - 1 while left <= right: mid = left + (right - left) // 2 if nums[mid] < nums[right]: right = mid #如果中间的值小于右边的值,说明此时数组最小值在左半部, #挪动右边界指针到中间索引,为了避免此时的中间索引值就是最小的值,所以mid不能够减1 elif nums[mid] > nums[right]: left = mid + 1 #如果中间的值大于的值,说明此时的最小值在右半部,挪动左边界指针到当前中间索引的后一个 else: right -= 1 #如果中间值与右边界值相同,那么挪动右边界向左靠一位,这样就可以在下次循环时重新计算出中间索引值 return nums[left]