这一题来自剑指offer,做了至少有三遍,也看了很多遍,但还是没记住?我是猪。。
这一题需要考虑一个额外的情况,其实就一行代码,就是他可能没有做旋转。。
代码如下:
class Solution(object):
def findMin(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if len(nums) == 0:
return -1
if len(nums) == 1:
nums[0]
left = 0
right = len(nums) - 1
if nums[left] < nums[right]:
return nums[left]
while nums[left] >= nums[right]:
if right - left == 1:
mid = right
print mid
break
mid = (left + right) / 2
if nums[left] == nums[mid] and nums[mid] == nums[right]:
result = nums[left]
for i in range(left, right+1):
if nums[i] > result:
result = nums[i]
return result
elif nums[left] <= nums[mid]:
left = mid
elif nums[mid] <= nums[right]:
right = mid
return nums[mid]
网友评论