题目如下:
![这里写图片描述](https://i-blog.csdnimg.cn/blog_migrate/d148cf579d54d40bf8ba25745bbc66c4.png)
利用二分查找可以让复杂度降到O(logN),空间复杂度O(1),解答如下:
![这里写图片描述](https://i-blog.csdnimg.cn/blog_migrate/3757fc4c6797a5333406a6ae0ad89d89.png)
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
题目来源于《程序员代码面试指南》