Gacy 发表于 2021-10-8 14:26:41

大佬们看看

请编程找出矩阵中的幸运数字。来

说明:假设给定一个 m * n 的矩阵(矩阵中数值的取值范围是0~1024,且各不相同),如果某一个元素的值在同一行的所有元素中最小,并且在同一列的所有元素中最大,那么该元素便是幸运数字。

假设给定的矩阵如下:

matrix = [,

          ,

          ]

那么输出结果应该是 66(同时满足同一行的所有元素中最小,并且在同一列的所有元素中最大)。

傻眼貓咪 发表于 2021-10-8 15:05:57

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

wp231957 发表于 2021-10-8 15:12:15

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")

Gacy 发表于 2021-10-8 17:18:47

wp231957 发表于 2021-10-8 15:12


感谢大佬{:10_254:}可以说下思路吗

wp231957 发表于 2021-10-8 17:25:54

Gacy 发表于 2021-10-8 17:18
感谢大佬可以说下思路吗

很简单啊,找出列的最大值,并标注其所在的行数,然后判断该值是不是该行的最小值

wp231957 发表于 2021-10-8 17:29:17

Gacy 发表于 2021-10-8 17:18
感谢大佬可以说下思路吗

2楼代码也很清晰,只不过没有考虑找不到的情况

Gacy 发表于 2021-10-8 17:43:41

wp231957 发表于 2021-10-8 17:25
很简单啊,找出列的最大值,并标注其所在的行数,然后判断该值是不是该行的最小值

好的谢谢大佬{:10_254:}

傻眼貓咪 发表于 2021-10-8 17:50:49

本帖最后由 傻眼貓咪 于 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

阿奇_o 发表于 2021-10-8 20:35:35

要是你正在学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]
查看完整版本: 大佬们看看