编程语言
首页 > 编程语言> > python算法练习题

python算法练习题

作者:互联网

1、二维有序数组中查找一个数

在n*m数组中,每行递增,每列递增,设计代码,查找数组中是否有目标数

如矩阵
l=[
[1,4,7,11],
[2,5,8,12],
[3,6,10,16]
]
给定目标数9,返回false;给定目标数10,返回true。

思路:
从左下角或者右下角开始,从第一行开始,如对右上角的数字和目标进行对比,如果右上角比目标小,代表第一行都没有数字,可以从下一行开始;如果右上角数组和目标对比,如果右上角比目标大,代表右上角所在的一列,都比目标数字大,下一次可以从倒数第二列开始。一直缩小范围,直到找到或者找不到目标数。

def find_num(targ,list):
    r,l = len(list),len(list[0])-1      #r为长度,l为列下标,所以l-1
    i = 0
    while 0 <= i <r:
        print('i = %d' % i)             #i为行的下标,打印下
        if list[i][l] == targ:
            return True
        elif list[i][l] < targ and l>= 0:
            print(list[i][l])
            i += 1                      #下移一行
        elif list[i][l] > targ and l>= 0:
            print(list[i][l])
            l -= 1                      #左移1列
        elif l<0:
            return False
    return False

l=[
    [1,4,7,11],
    [2,5,8,12],
    [3,6,10,16]
]
print(find_num(9,l))

标签:练习题,elif,python,list,目标,右上角,算法,数组,print
来源: https://www.cnblogs.com/ua-21/p/16376189.html