二维数组中的查找 ( python实现 )
一、题目描述
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
例如下面的二维数组就是每行、每列都递增排序。如果在这个数组中查找数字7,则返回true;如果查找数字5,由于数组不含有该数字,则返回false。
1 | 2 | 8 | 9 |
---|---|---|---|
2 | 4 | 9 | 12 |
4 | 7 | 10 | 13 |
6 | 8 | 11 | 15 |
二、解题思路
暂略。(此处主要作为书中python实现补充)
三、代码实现
代码实现中,我们每次都选取查找范围内的右上角数字,当然在实现过程中也可选择左下角的数字。具体python实现如下。
def findNumber(myMatrix,number):
matrix_row = len(myMatrix)
matrix_column = len(myMatrix[0])
if matrix_row > 0 and matrix_column > 0:
row = 0
column = matrix_column - 1
while row < matrix_row and column > 0:
if number > myMatrix[row][column]:
row = row+1
elif number < myMatrix[row][column]:
column = column-1
else:
return row,column
return False
>>> myMatrix=[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]
>>> findNumber(myMatrix,7)
Out:
(2,1)
>>> myMatrix=[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]
>>> findNumber(myMatrix,20)
Out
False