homework_02.py 1 KB
Newer Older
牛家玺 committed
1
#算法实现有问题效率太低 可能要遍历整个列表
2 3 4 5 6 7 8 9 10 11 12 13 14
def peakIndexInMountainArray(A):
    """
    :type A: List[int]
    :rtype: int
    """
    # return A.index(max(A))
    for i in range(len(A)-1):
        if A[i+1] < A[i]:
            a_max = A[i]
            return A.index(a_max)


print(peakIndexInMountainArray([9, 1, 15, 3]))  # 预期输出 1def peakIndexInMountainArray(A):
牛家玺 committed
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39


#二分查找的实现
def peakIndexInMountainArray(mountain):
    height = len(mountain)
    low = 0
    while low <= height:
        mid = (height + low) // 2
        if array[mid] > array[mid - 1] and array[mid] > array[mid + 1]:
            print(mid)
            break
        elif array[mid] > array[mid + 1]:
            height = mid - 1
        else:
            low = mid + 1


array = [0, 1, 0]
peakIndexInMountainArray(array)
array = [0, 2, 1, 0]
peakIndexInMountainArray(array)
array = [0, 1, 2, 3, 7, 6, 5, 4, 2, 1, 0]
peakIndexInMountainArray(array)
array = [0, 1, 2, 7, 6, 5, 4, 0]
peakIndexInMountainArray(array)