Suppose a sorted array is rotated at some pivot unknown to you beforehand.
(i.e., 0 1 2 4 5 6 7
might become 4 5 6 7 0 1 2
).
Find the minimum element.
You may assume no duplicate exists in the array.
其实这道题是求旋转数组中的最小值的,将有序数组绕某点旋转,得到旋转数组,所以最后的数组前后两半部分都是各自有序的,那么怎么得到最小值呢?《剑指offer 名企面试
官精讲典型编程题》中是用二分查找的。
class Solution:
# @param {integer[]} nums
# @return {integer}
def findMin(self, nums):
head = 0
end = len(nums) - 1
if nums[head] <= nums[end]:
return nums[head]
while head <= end:
mid = (head + end) >> 1
if end - head == 1:
return nums[end]
if nums[mid] > nums[head]:
head = mid
elif nums[mid] < nums[end]:
end = mid