给定整型序列 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)