网易雷火笔试

矩形排序

链接:https://www.nowcoder.com/questionTerminal/1e53179d01574379a5f85c7666d098d9?f=discussion

给定N个矩形,每个矩形宽W米高H米 请按以下规则将这N个矩形排序,输出排序后的矩形列表 排序规则: 面积小的矩形排在面积大的矩形前面 面积相同的矩形,按照宽高比排序,宽高比大的矩形排在宽高比小的矩形前面 宽高比的定义为 min(W/H, H/W) 面积和宽高比都相同的矩形,按照宽排序,宽度更小的矩形排在宽度更大的矩形前面

利用python中的sort函数,与元组具有的比较性可以在几行内完成。

import sys
N = int(sys.stdin.readline())
WHs = list(map(int, sys.stdin.readline().split()))
Ws = WHs[::2]
Hs = WHs[1::2]
Ss = [(Ws[i] * Hs[i], 1/min(Ws[i]/Hs[i], Hs[i]/Ws[i]), Ws[i], Hs[i]) for i in range(N)]
Ss.sort()
print(' '.join([f'{k[2]} {k[3]}' for k in Ss]))

全部评论

相关推荐

昨天 22:13
腾讯_TEG_技术
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务