LeetCode面试题04.在二维数组中搜索【JianzhiOffer】[Easy][Python]】【数组】问题是在一个n*m的二维数组中,每一行从左到右升序排列,每一列从上到下升序排列。请完成一个函数,输入这样一个二维数组和一个整数,判断数组中是否包含整数。例:现有矩阵矩阵如下:[[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]]给定target=5,返回true。给定target=20,返回false。限制条件:0<=n<=10000<=m<=1000注:本题与主站240题同题。解决办法是直接暴力遍历。时间复杂度:O(n*m),其中n为matrix矩阵的行数,m为matrix矩阵的列数。空间复杂度:O(1)Python3codefromtypingimportListclass解决方法:deffindNumberIn2DArray(self,matrix:List[List[int]],target:int)->bool:#解决方法一:暴力#特殊判断ifmatrix==[]:返回假n,m=len(matrix),len(matrix[0])foriinrange(n):forjinrange(m):ifmatrix[i][j]==target:returnTrueelifmatrix[i][j]>target:breakreturnFalse解法二、左下角标记数的方法从左下角开始判断如果相等则返回;如果大于target,说明该行的最小值必须大于target,所以上移一行;如果小于target,说明该列的最大值小于target,向右移动一列。时间复杂度:O(n+m),其中n为matrix矩阵的行数,m为matrix矩阵的列数。空间复杂度:O(1)Python3代码来自输入importListclass解决方案:deffindNumberIn2DArray(self,matrix:List[List[int]],target:int)->bool:#解决方案二:左下符号数方法i,j=len(matrix)-1,0whilei>=0andj
