行從左到右遞增,列從上到下遞增,找目標值

weixin_45503449發表於2020-10-11

位元組
講思路在一個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序,給定一個目標數,判斷是否在矩陣中。

先看target是不是大於第一行最右邊的(最大值),
大於然後對比往下一行的最大值,
小於就跟當前一列的值往左對比。。

二維陣列是從左到右遞增,從上到下遞增,row為行數,col為列數,a[row-1][col-1]為最大數,如果剔除這一行,這一列,則最大數為a[row-2][col-2],如果要查詢的num大於a[row-2][col-2]並且大於a[row-1][col-1],則在該row-1行和col-1列查詢,照這樣遍歷。

def find(target, array):
    i = 0
    j = len(array[0]) - 1
    
    while i < len(array) and j >= 0:
        base = array[i][j]
        if target == base:
            return True
        elif target > base: 
            i += 1
        else:
            j -= 1
    return False


print(find(11212,[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]))

相關文章