2、二维数组中的查找

题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样一个二维数组和一个整数,判断数组中是否含有该整数。

 由于9>7,而9所在列下方的元素都大于9,所以剔除9所在的列

   由于8>7,所以,同上剔除8所在的列

由于2小于7,而2所在行左边的元素均小于2,所以,剔除2所在的行

  由于4<7,剔除4所在的行

lis=[[1,2,8,9],
     [2,4,9,12],
     [4,7,10,13],
     [6,8,11,15]]

target=15
rows=len(lis)-1               #数组的行数
cols=len(lis[0])-1            #数组的列数

def findNum(lis,target):
    i = 0                     # (i,j)标记最右上角元素的坐标
    j = cols
    while i<=rows and j>=0:
        temp = lis[i][j]
        if temp == target:
            return True
        elif temp>target:
            j=j-1
        elif temp<target:
            i=i+1
    return False

print(findNum(lis,target))

 

posted @ 2018-08-21 16:31  7aughing  阅读(175)  评论(0编辑  收藏  举报