站长工具查询网站信息,怎么设计网站规划方案,国际新闻最新消息10条简短,帮别人做网站赚钱吗给你一个 m * n 的矩阵#xff0c;矩阵中的数字 各不相同 。请你按 任意 顺序返回矩阵中的所有幸运数。幸运数 是指矩阵中满足同时下列两个条件的元素#xff1a;在同一行的所有元素中最小 在同一列的所有元素中最大 示例 1#xff1a;输入#xff1a;matrix [[3,7,8],[9,…给你一个 m * n 的矩阵矩阵中的数字 各不相同 。请你按 任意 顺序返回矩阵中的所有幸运数。幸运数 是指矩阵中满足同时下列两个条件的元素在同一行的所有元素中最小 在同一列的所有元素中最大 示例 1输入matrix [[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] 解释7是唯一的幸运数字因为它是行中的最小值列中的最大值。
解题思路
首先分别返回一个含有每行中最小元素的列表与每列中最大元素的列表
遍历整个列表判断数是否是一行中最小的同时又是一列中最大的元素最后返回result的列表即可。
class Solution:def luckyNumbers(self,matrix:List[List[int]])-List[int]:mlen(matrix)nlen(matrix[0])min_row[]max_col[]for i in range(m):min_rpw.append(min(matrix[i]))for j in range(n):max_10for i in range(m):if matrix[i][j]max_1:max_1matrix[i][j]max_col.append(max_1)result[]for i in range(m):for j in range(n):if matrix[i][j]min_row[i] and martix[i][j]max_col[j]:result.append(matrix[i][j])return result
例子
arr[[10,36,52],
[33,24,88],
[66,76,99]]#获取矩阵的元素个数也就是行数
rowlen(arr) #row3
print(行数:{}.format(row))
#获取矩阵的列数数也就是一维数组中的元素个数
collen(arr[0]) #col3
print(列数:{}.format(col))#有多少行就有多少个行最小值minrow[col],来进行统计col取值为0..row
#同理有多少个列就有多少个列最大值用maxcol[col],来进行统计col取值为0..col
#先赋初值题目是0到1024那就可以让最小值初值为最大最大值初值为最小
minrow[1024]*row
for i in range(row):print(minrow[i])
#这里就是把minrow[0]1024,minrow[1]1024,minrow[2]1024
maxcol[0]*col
for i in range(col):print(maxcol[i])
#这里就是把mincol[0]0,mincol[1]0,mincol[2]0
#这个容易理解要求最小我就拿个最大的和你比如果比我小让换成小的直到找到最小同理找到最大的也是这样#i为行号j为列号
for i in range(row):for j in range(col):print(i,j,arr[i][j])minrow[i]min(arr[i][j],minrow[i]) #第一次让arr[0,0]10和minrow[0]1024进行对比取小的minrow[0]10,以此类推maxcol[j]max(arr[i][j],maxcol[j]) #第一次让arr[0,0]10和maxrow[0]0进行对比取大的maxrow[0]10,以此类推,一个元素即是在行i里面,同时又在列j里面所以同时比较#通过上面比较我们获取了minrow[0]10,minrow[1]24,minrow[2]66,#通过上面比较我们获取了maxcol[0]66,maxcol[1]76,maxcol[3]99#接下来获取幸运数就容易了两两比较有相等的就可以了
for i in range(row):for j in range(col):if minrow[i]maxcol[j]:print(幸运数是,minrow[i])
程序运行结果
行数:3
3
1024
1024
1024
0
0
0
0 0 10
0 1 36
0 2 52
1 0 33
1 1 24
1 2 88
2 0 66
2 1 76
2 2 99
幸运数是 66