鱼C论坛

 找回密码
 立即注册
查看: 1946|回复: 8

[已解决]矩阵中的幸运数

[复制链接]
发表于 2020-10-22 15:56:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
最近求助帖有点少了,难道各位都变大神,就我还是小菜B一个吗?
如果是这样的话我就发点题目给你做做

请看题:

给你一个 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 是唯一的幸运数,因为它是其所在行中的最小值,也是所在列中的最大值。


来吧,是时候表演真正的技术了


最佳答案
2020-10-22 17:40:32
本帖最后由 hrp 于 2020-10-22 17:46 编辑
rmins = [min(l) for l in matrix]
cmaxs = [max(l) for l in zip(*matrix)]

res = [n for n in rmins if n in cmaxs]
print(res)

遭了,发现不对
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-22 16:10:51 | 显示全部楼层
import numpy as np

matrix = [[3, 7, 8], [9, 11, 13], [15, 16, 17]]
#matrix = [[1,10,4,2],[9,3,8,7],[15,16,17,12]]
m = np.array(matrix).reshape(len(matrix),len(matrix[0]))
print(m)
index_min = m.min(axis=1)
column_max = m.max(axis=0)
num=[i for i in index_min if i in column_max]
if len(num)>0:
    print('幸运数字:', num)
else:
    print('未找到')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-22 16:17:37 | 显示全部楼层

基础题,不能用到库
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-22 16:45:42 | 显示全部楼层
jtxs0000 发表于 2020-10-22 16:17
基础题,不能用到库

这样够基础了吧,都是循环
matrix = [[3, 7, 8], [9, 11, 13], [15, 16, 17]]
#matrix = [[1,10,4,2],[9,3,8,7],[15,16,17,12]]
matrix_new=[[] for i in range(len(matrix[0]))]
#行中最小
index_min=[]
#列中最大
column_max=[]
for key,value in enumerate(matrix):
    for key2,value2 in enumerate(value):
        matrix_new[key2].append(value2)
    index_min.append(min(value))
for key,value in enumerate(matrix_new):
    column_max.append(max(value))

num=[i for i in index_min if i in column_max]
if len(num)>0:
    print('幸运数字:', num)
else:
    print('未找到')

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
jtxs0000 + 1 + 1 感谢楼主无私奉献!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-10-22 16:56:44 | 显示全部楼层
还有没有要挑战一下自己的,没有我就结贴咯
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-22 17:40:32 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
本帖最后由 hrp 于 2020-10-22 17:46 编辑
rmins = [min(l) for l in matrix]
cmaxs = [max(l) for l in zip(*matrix)]

res = [n for n in rmins if n in cmaxs]
print(res)

遭了,发现不对
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-22 17:55:42 | 显示全部楼层
hrp 发表于 2020-10-22 17:40
遭了,发现不对

对的啊,我写了这么多,也就是为了矩阵倒置,zip(*)就可以搞定
学习到了zip()的用法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-22 17:58:13 From FishC Mobile | 显示全部楼层
疾风怪盗 发表于 2020-10-22 17:55
对的啊,我写了这么多,也就是为了矩阵倒置,zip(*)就可以搞定
学习到了zip()的用法


我脑子有点蒙,也不知道对不对
zip可以比较方便把按行分组变成按列分组
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-22 18:03:06 | 显示全部楼层
hrp 发表于 2020-10-22 17:58
我脑子有点蒙,也不知道对不对
zip可以比较方便把按行分组变成按列分组

运行下来是对的,拆开来打印看了下,也对的
zip()这个函数以前用不多,今天学到的了新知识
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-18 07:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表