getFirstk和getLastk

2019-04-23  本文已影响0人  Haward_
def getFirstk(arr,k):
    if len(arr) == 0 or arr[0] > k or arr[-1] < k:
        return -1

    i,j = 0,len(arr)-1
    while i <= j:
        m = i + int((j-i)/2)
        if arr[m] < k:
            i = m + 1
        else:
            j = m
        if i == j:
            return i if arr[i] == k else -1
    return -1

def getLastk(arr,k):
    if len(arr) == 0 or arr[0] > k or arr[-1] < k:
        return -1

    i,j = 0,len(arr)-1
    while i <= j:
        m = i + int((j-i)/2)
        if arr[m] > k:
            j = m - 1
        else:
            i = m
        if i == j:
            return i if arr[i] == k else -1
    return -1

if __name__ == "__main__":
    arr = [1,2,2,2,4,5]
    k = 2
    res = getLastk(arr,k)
    print(res)
上一篇 下一篇

猜你喜欢

热点阅读