题目如下:
利用二分查找可以让复杂度降到O(logN),空间复杂度O(1),解答如下:
python代码如下:
def getLessIndex(arr):
if not arr:
return -1
le = len(arr)
if le == 1 or arr[1] > arr[0]:
return 0
if arr[le-1] < arr[le-2]:
return le-1
start = 1
end = le-2
while start < end:
mid = (start + end)//2
if arr[mid] > arr[mid-1]:
end = mid - 1
elif arr[mid] > arr[mid+1]:
start = mid + 1
else:
return mid
return start
题目来源于《程序员代码面试指南》