题目来源:链接
题目描述:
在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
实现代码:
def findNumberIn2DArray(self, matrix: List[List[int]], target: int) -> bool:
i,j = len(matrix)-1, 0
while i>=0 and j < len(matrix[0]):
if matrix[i][j] > target:
i -= 1
elif matrix[i][j] < target:
j += 1
else:
return True
return False
解题思路:
由于数组数据排列的特殊性,我们不需要用暴力法遍历整个矩阵,而是让初始位置在左下或者右上(依据情况具体而定,横向最小且纵向最大或者横向最大且纵向最小),这样复杂度由MN变成了M+N