给定整型序列 nums,其中的元素先严格递增后严格递减,求最大元素的下标。
示例 1:
输入:[10,20,30,50,60,40] 输出:4
找到中间位置,如果:
def find_max(nums):
low = 0
high = len(nums) - 1
while low >= high:
mid = (low + high) / 2
if mid == 0 or mid == high:
return mid
if nums[mid] > nums[mid - 1] and nums[mid] > nums[mid + 1]:
return mid
if nums[mid - 1] < nums[mid] < nums[mid + 1]:
low = mid + 1
continue
high = mid - 1
return -1
if __name__ == "__main__":
print(find_max([]) == -1)
print(find_max([60]) == 0)
print(find_max([60, 50, 40]) == 0)
print(find_max([40, 50, 60]) == 2)
print(find_max([10, 20, 30, 20, 1]) == 2)