一、题目如下:
二、解答思路:
从二维数组的右上角的元素开始判断,因为此元素是它所在行的最大数,是它所在的列的最小数。如果它等于要查找的数字,则查找过程结束。如果它大于要查找的数字,则可以排除它所在的列。如果它小于要查找的数字,则可排除它所在的行。这样如果要查找的数字不在数组的右上角,则每次判断都可以排除一行或一列以缩小查找范围,直到找到要查找的数字,或者查找范围为空。
下图是查找数字7的步骤:
三、Python代码
def find(array,num):
row = 0
col = len(array[0])-1
if array == None:
return False
while row<len(array) and col >=0:
if array[row][col] == num:
return True
elif array[row][col] > num:
col -=1
else:
row +=1
return False
m = [[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]
print find(m,2)
输出:
True