大佬们看看
请编程找出矩阵中的幸运数字。来说明:假设给定一个 m * n 的矩阵(矩阵中数值的取值范围是0~1024,且各不相同),如果某一个元素的值在同一行的所有元素中最小,并且在同一列的所有元素中最大,那么该元素便是幸运数字。
假设给定的矩阵如下:
matrix = [,
,
]
那么输出结果应该是 66(同时满足同一行的所有元素中最小,并且在同一列的所有元素中最大)。 def luckyNumber(arr: list) -> int:
for m in arr:
x = min(m)
col = m.index(x)
res = for n in range(len(arr))]
if max(res) == x:
return x
matrix = [
,
,
]
print(luckyNumber(matrix))66 matrix = [,
,
]
cmax=matrix
flag=0
for x in range(3):
for y in range(3):
if matrix>cmax:
cmax=matrix
r=y
if cmax==min(matrix):
num=cmax
flag=1
if flag:
print(num)
else:
print("no data") wp231957 发表于 2021-10-8 15:12
感谢大佬{:10_254:}可以说下思路吗 Gacy 发表于 2021-10-8 17:18
感谢大佬可以说下思路吗
很简单啊,找出列的最大值,并标注其所在的行数,然后判断该值是不是该行的最小值 Gacy 发表于 2021-10-8 17:18
感谢大佬可以说下思路吗
2楼代码也很清晰,只不过没有考虑找不到的情况 wp231957 发表于 2021-10-8 17:25
很简单啊,找出列的最大值,并标注其所在的行数,然后判断该值是不是该行的最小值
好的谢谢大佬{:10_254:} 本帖最后由 傻眼貓咪 于 2021-10-8 17:51 编辑
找不到,则输出 Nonedef luckyNumber(arr: list) -> int:
for m in arr:
x = min(m)
col = m.index(x)
res = for n in range(len(arr))]
if max(res) == x:
return x
matrix = [
,
,
]
print(luckyNumber(matrix))None 要是你正在学numpy或pandas, 有一个 简单的行列调换方法: .T
>>> matrix =[,,]
>>> import numpy as np
>>> mt = np.array(matrix)
>>> mt
array([,
,
])
>>>
>>> for r in mt:
for c in mt.T:
if min(r) == max(c):
print(r, c)
print("Lucky num:", min(r))
Lucky num: 66
页:
[1]