|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
matrix = [[10, 36, 52],
[33, 24, 88],
[66, 76, 99]]
row = len(matrix)
col = len(matrix[0])
min_row = [1024] * row
max_col = [0] * col
# 遍历矩阵中的每一个元素
# 找到每行中最小的元素,并将它们存放到列表min_row中
# 找到每列中最大的元素,并将它们存放到列表max_col中
for i in range(row):
for j in range(col):
min_row[i] = min(matrix[i][j], min_row[i])
max_col[j] = max(matrix[i][j], max_col[j])
# 遍历矩阵中的每一个元素
# 判断是否同时满足“同一行的所有元素中最小”和“同一列的所有元素中最大”
for i in range(row):
for j in range(col):
if matrix[i][j] == min_row[i] and matrix[i][j] == max_col[j]:
print(matrix[i][j])
本帖最后由 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>
复制代码
|
|