![fe2a382d19ced47f3c741724d0bfd71b.png](https://i-blog.csdnimg.cn/blog_migrate/c7c94a898f84dba7ef323d62963a82d2.png)
题目
在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
Leetcode:
力扣leetcode-cn.com方法1:遍历
从左到右,从上到下进行遍历,时间复杂度为O(N*M),空间复杂度为O(1)
代码略(这么写的话面试大概率过不了吧)
方法2:从左上角或右下角进行遍历, 时间复杂度为O(max(N,M)),空间复杂度为O(1)
class Solution:
def findNumberIn2DArray(self, matrix: List[List[int]], target: int) -> bool:
if not matrix:
return False
N = len(matrix)
M = len(matrix[0])
n = N-1
m = 0
while n>=0 and m<M:
if matrix[n][m]==target:
return True
elif matrix[n][m]>target:
n -=1
else:
m +=1
return False
ps.本人即将找工作的菜鸡,欢迎批评指导!