在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。
请写一个函数,输入这样一个二维数组和一个整数,判断数组中是否有该整数。
思路:
矩阵是有序的,从左下角来看,向上是递减的,向右是递增的。
因此从左下角出发,当目的数字比当前数字大的时候,(右移)就执行向右查询;当目的数字比当前数字小的时候,就向上继续查询(上移)。
1 #!/usr/bin/env python3 2 # -*- coding: utf-8 -*- 3 4 def find_num(ary, num): 5 row = len(ary) - 1 6 while row >= 0 : 7 for i in range(len(ary[row])): 8 if num == ary[row][i]: 9 return True 10 #如果目的数字小于当前数字,就跳出当前循环,上移一行 11 if num < ary[row][i]: 12 break 13 #如果目的数字大于当前数字,就执行向右查询。 14 #如果右移玩一行都没有找到的话,就上移。 15 if num > ary[row][i]: 16 continue 17 row -= 1 18 return False 19 20 if __name__ == '__main__': 21 a = [[1,3,5],[2,4,6,8]] 22 print(find_num(a, 5))