当前位置: 首页 > 后端技术 > Python

力扣-1380.矩阵中的幸运数字[Python]

时间:2023-03-26 00:53:31 Python

LeetCode1380.矩阵中的幸运数字[易][Python][暴力]幸运数字是矩阵的一个元素,它是行中的最小元素和列中的最大值。示例1:输入:matrix=[[3,7,8],[9,11,13],[15,16,17]]输出:[15]解释:15是唯一的幸运数字,因为它是最小值在它的行和它的列中的最大值示例2:输入:矩阵=[[1,10,4,2],[9,3,8,7],[15,16,17,12]]输出:[12]解释:12是唯一的幸运数字,因为它是行中的最小值和列中的最大值。示例3:输入:矩阵=[[7,8],[1,2]]输出:[7]约束:m==mat.length==mat[i].length1<=n,m<=501<=matrix[i][j]<=10^5。矩阵中的所有元素都是不同的。不一样。请按任意顺序返回矩阵中的所有幸运数字。幸运数是指矩阵中同时满足以下两个条件的元素:同一行所有元素中最小的和同一列所有元素中最大的例1:输入:矩阵=[[3,7,8],[9,11,13],[15,16,17]]输出:[15]解释:15是唯一的幸运数字,因为它是所在行的最小值和最大值在其专栏中。示例2:输入:matrix=[[1,10,4,2],[9,3,8,7],[15,16,17,12]]输出:[12]解释:12是唯一的幸运儿数字,因为它是其行中的最小值和其列中的最大值。示例3:输入:matrix=[[7,8],[1,2]]输出:[7]提示:m==mat.lengthn==mat[i].length1<=n,m<=501<=matrix[i][j]<=10^5矩阵中的所有元素都是不同的思路。暴力解法就是求每一行的最小值,然后判断是否是当前列的最大值。时间复杂度:O(m*n),其中m是矩阵的行数,n是矩阵的列数。输入importListclass解决方案的Python3代码:defluckyNumbers(self,matrix:List[List[int]])->List[int]:#solutiononem,n=len(matrix),len(matrix[0])flag=0res=[]foriinrange(m):min_=max_=matrix[i][0]forjinrange(n):ifmatrix[i][j]max_:breakelifx==m-1:res.append(max_)returnres解2分别找出每行的最小值和每列的最大值,然后判断它们是否相等。时间复杂度:O(max(m,n)),其中m为矩阵的行数,n为矩阵的列数。输入importListclass解决方案的Python3代码:defluckyNumbers(self,matrix:List[List[int]])->List[int]:#solutiontwomin_={min(rows)forrowsinmatrix}max_={max(columns)forcolumnsinzip(*matrix)}#zip(*)转置矩阵,即求每一列中的最大值returnlist(min_&max_)代码地址github链接

猜你喜欢