一、题目描述
在一个二维数组中,每一行都按照从左往右递增以及每一列都按照从上往下递增的顺序排序。完成一个函数,输入这样的二维数组和一个整数,判断该整数是否在这个数组中
二、解题思路
书中的思路是从右上角不断往左下来剔除一行或者一列,我用的是从左下脚不断往右上提剔除一行或者一列,即当前位置的数如果大于num,则剔除当前行;如果当前位置的数小于num,则剔除当前列,需要考虑在两个边上的情况:如果在第一行的位置,如果当前位置的数比num大,则不存在相等,同理如果在最后一列,如果当前位置的数比num小,则不存在相等。
三、解题代码
def dimension_two_search(matrix, num): m, n = len(matrix), len(matrix[0]) i, j = m-1, 0 result = False while i >= 0 and j <= n-1: if matrix[i][j] == num: result = True break if i==0 and matrix[i][j] > num: break if j==n-1 and matrix[i][j] < num: break while matrix[i][j] > num and i > 0: i -= 1 while matrix[i][j] < num and j < n-1: j += 1 return result