本帖最后由 jackz007 于 2022-10-9 16:37 编辑 首先,应该确定,如果 matrix 没有重复元素,那么,满足行内最小、列内最大这样条件的元素一定存在,而且,只有一个。
matrix 有 3 行 3 列,列表 min_row、max_col 中各保存了 3 个元素,循环遍历这两个列表,如果它们存在相同元素,例如,min_row[i] == max_col[j] 那就说明元素 matrix[i][j] 是矩阵 matrix 中满足行内最小同时列内最大的那个元素。
运行一下这个代码,看看结果,也许能帮助你理解原理:matrix = [[10, 36, 52],[33, 24, 88],[66, 76, 99]]
d = [min(matrix[i]) for i in range(len(matrix))] # d = matrix 行最小值列表
e = [max([matrix[i][j] for i in range(len(matrix))]) for j in range(len(matrix[0]))] # e = matrix 列最大值列表
for i in range(len(d)):
for j in range(len(e)):
if d[i] == e[j] :
print('matrix[%d , %d] = %d' % (i , j , matrix[i][j]))
break
print()
print("reference infomation : ")
print('=' * 30)
print('matrix :' , matrix[0])
for i in range(1 , len(matrix)) : print(' ' * 8 , matrix[i])
print()
print(' d :' , d)
print(' e :' , e)
运行实况:D:\[00.Exerciese.2022]\Python>python x.py
matrix[2 , 0] = 66
reference infomation :
==============================
matrix : [10, 36, 52]
[33, 24, 88]
[66, 76, 99]
d : [10, 24, 66]
e : [66, 76, 99]
D:\[00.Exerciese.2022]\Python>
|