python 在数组中找到一个局部最小的位置

题目如下:


这里写图片描述

利用二分查找可以让复杂度降到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

题目来源于《程序员代码面试指南》

猜你喜欢

转载自blog.csdn.net/jingjing_94/article/details/80592310
今日推荐