【每周一坑】矩阵旋转

本文涉及的产品
应用实时监控服务-应用监控,每月50GB免费额度
应用实时监控服务-用户体验监控,每月100OCU免费额度
简介: 给定一个 N * N 的矩阵(N >= 0),将其顺时针旋转 90°.输出处理之后的矩阵。

每N周一坑(N>=1)又来啦!之前我们玩过一次矩阵【每周一坑】螺旋矩阵,今天继续来做矩阵相关的操作:


题目说明


给定一个 N * N 的矩阵(N >= 0),将其顺时针旋转 90°.输出处理之后的矩阵。


举例:


1    2    3

4    5    6

7    8    9

7    4    1

8    5    2

9    6    3


附加要求


在不创建新矩阵的情况下做变换,即所有的修改都在原矩阵上直接进行。


def ratate(matrix):
    '''
    : type matrix : List(List(Int))
    : rtype: List(List(Int))
    '''
    # your code here
m1 = [[]]
m2 = [[1]]
m3 = [[i for i in range(3)] for j in range(3)]
m4 = [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]
assert ratate(m1) == [[]]
assert ratate(m2) == [[1]]
assert ratate(m3) == [[0, 0, 0], [1, 1, 1], [2, 2, 2]]
assert ratate(m4) == [[13, 9, 5, 1], [14, 10, 6, 2], [15, 11, 7, 3], [16, 12, 8, 4]]


期待各位同学提交解答。


提交代码可以使用 paste.ubuntu.com 或 codeshare.io 等代码分享网站,只需将代码复制上去保存,即可获得一个分享地址,非常方便。


往期问题可通过公众号菜单栏“课外辅导”栏目中进入查看。


【解答】阿姆斯特朗数

上期题目中有个错误:阿姆斯特朗数应该是一个N位正整数等于其各个数字的N次方和,而不是固定的三次方。不好意思,感谢各位同学的指正。


提供一种思路:


  1. 把数字转成字符串
  2. 每一位数字 ** 字符串长度(乘方),将结果累加
  3. 判断结果和原数值是否相等
  4. 循环执行

参考解答:


def judge_arms(i):
    # 将该数转换为字符串 123 -> '123'
    tem = str(i)
    # 按照 n位正整数等于其各位数字的n次方 进行求和
    # sum = 1**3 + 2**3 + 3**3
    tem_sum = sum([int(j)**len(tem) for j in tem])
    # 判断求和之后的数是否和原数相等
    if i == tem_sum:
        return True
'''
寻找小于 1000 的阿姆斯特朗数
逐一遍历小于 1000 的数
判断是否为阿姆斯特朗数
'''
def arms(N):
    for i in range(1, N+1):
        if judge_arms(i):
            print(i)
arms(1000)
'''
附加题: 输入一个正整数,输出距离它最近的阿姆斯特朗数。
以指定的数为基准,同时向前向后寻找阿姆斯特朗数
找到即返回该数
'''
def near_arms(N):
    forward, backward = N, N
    while True:
        if judge_arms(forward):
            return forward
        elif judge_arms(backward):
            return backward
        forward += 1
        backward -= 1
r = near_arms(100000)
print(r)


本期提交答案的同学很多(因为拖得时间久啊……),选出两份比较有代表性的:


@王任 同学写的比较精简,参考地址:

http://paste.ubuntu.com/25238978/


@成仙 同学写的比较直观,容易理解,各部分代码清楚:

https://paste.ubuntu.com/25268753/


其他同学比如 @Betterment、@Will、@strawhat、@uznEnehC、@H. Lecter…… 也都完成了题目,这里不一一展示。感谢大家的积极参与!


  • 点击左下角“阅读原文”,可查看Python教程及更多学习资源
  • 代码问题请在论坛 bbs.crossincode.com 上发帖提问
  • 欢迎加入讨论交流群组共同学习进步
  • 别忘将我们的文章转发朋友圈或在知乎上为我们的专栏点赞,你们的支持将会让编程教室做得更好:)


近期文章推荐阅读:

编程新手:看懂很多示例,却依然写不好一个程序

喏,你们要的 PyCharm 快速上手指南

几个以前发过、回复过很多次、比较有用的学习资源

给伸手党的福利:Python 新手引导

如何用100行Python代码做出魔性声控游戏“八分音符酱”

数据分析:当赵雷唱民谣时他唱些什么?

一行代码扫出“敬业福”

我扒了杜蕾斯的微博

Python 爬虫爬取美剧网站

今天,你抢到票了吗?

爆款游戏《贪吃蛇大作战》的 Python 实现

相关实践学习
通过云拨测对指定服务器进行Ping/DNS监测
本实验将通过云拨测对指定服务器进行Ping/DNS监测,评估网站服务质量和用户体验。
相关文章
|
1月前
|
NoSQL 关系型数据库 MySQL
2024 RedisAnd Mysql基础与进阶操作系列(17)作者——LJS[你个小黑子这都还学不会嘛?你是真爱粉嘛?真是的 ~;以后请别侮辱我家鸽鸽]
如何通过php和python客户端来操作Redis数据库等保姆式具体操作详解步骤;举例说明、注意点及常见报错问题所对应的解决方法
|
1月前
|
存储 NoSQL 关系型数据库
2024 RedisAnd Mysql基础与进阶操作系列(13)作者——LJS[你个小黑子这都还学不会嘛?你是真爱粉嘛?真是的 ~;以后请别侮辱我家鸽鸽]
Redis之Nosql数据库分类、存储类型、特点;Redis 作用、与其他库的对比、使用场景以及如何部署、安装等具体详解步骤;举例说明、注意点及常见报错问题所对应的解决方法
|
1月前
|
存储 NoSQL 关系型数据库
2024 RedisAnd Mysql基础与进阶操作系列(16-4)作者——LJS[你个小黑子这都还学不会嘛?你是真爱粉嘛?真是的 ~;以后请别侮辱我家鸽鸽]
Redis数据类型之Set类型及相关命令如:SADD/SMEMBERS/SCARD/SISMEMBER、SPOP/SREM/SRANDMEMBER/SMOVE、SDIFF/SDIFFSTORE/SINTER/SINTERSTORE 等具体操作详解步骤;举例说明、注意点及常见报错问题所对应的解决方法
|
1月前
|
NoSQL 关系型数据库 MySQL
2024 RedisAnd Mysql基础与进阶操作系列(16-5)作者——LJS[你个小黑子这都还学不会嘛?你是真爱粉嘛?真是的 ~;以后请别侮辱我家鸽鸽]
Redis数据类型之ZSet类型及相关命令如:SADD/SMEMBERS/SCARD/SISMEMBER、ZRANGEBYSCORE/ZREMRANGEBYRANK/ZREMRANGEBYSCORE、ZREVRANGE/ZREVRANGEBYSCORE/ZREVRANK等命令具体操作详解步骤;举例说明、注意点及常见报错问题所对应的解决方法
|
1月前
|
存储 NoSQL 关系型数据库
2024 RedisAnd Mysql基础与进阶操作系列(16-2)作者——LJS[你个小黑子这都还学不会嘛?你是真爱粉嘛?真是的 ~;以后请别侮辱我家鸽鸽]
Redis数据类型之Hash类型及NCR/DECR/INCRBY/DECRBY、 GETSET、SETNX、SETRANGE/GETRANGE、SETBIT/GETBIT、MSET/MGET/MSETNX等具体操作详解步骤;举例说明、注意点及常见报错问题所对应的解决方法
|
1月前
|
存储 NoSQL 关系型数据库
2024 RedisAnd Mysql基础与进阶操作系列(15)作者——LJS[你个小黑子这都还学不会嘛?你是真爱粉嘛?真是的 ~;以后请别侮辱我家鸽鸽]
2024全网最全切最为详细的Redis库配置;你个小黑子这都还学不会嘛?你是真爱粉嘛?真是的 ~;以后请别侮辱我家鸽鸽
|
1月前
|
NoSQL 关系型数据库 MySQL
2024 RedisAnd Mysql基础与进阶操作系列(16-3)作者——LJS[你个小黑子这都还学不会嘛?你是真爱粉嘛?真是的 ~;以后请别侮辱我家鸽鸽]
Redis数据类型之List类型语法格式说明表及LPUSH/LPUSHX/LRANGE、LPOP/LLEN、LREM/LSET/LINDEX/LTRIM、LINSERT RPUSH/RPUSHX/RPOP/RPOPLPUSH等具体操作详解步骤;举例说明、注意点及常见报错问题所对应的解决方法
|
1月前
|
NoSQL 关系型数据库 MySQL
2024 RedisAnd Mysql基础与进阶操作系列(19)作者——LJS[你个小黑子这都还学不会嘛?你是真爱粉嘛?真是的 ~;以后请别侮辱我家鸽鸽]
Redis应用场景之取最新N个数据的操作、精准设定过期时间、计数器应用、Uniq操作,获取某段时间所有数据排重值、Pub/Sub构建实时消息系统等保姆式具体操作详解步骤;举例说明、注意点及常见报错问题所对应的解决方法
|
1月前
|
NoSQL 关系型数据库 Redis
2024 RedisAnd Mysql基础与进阶操作系列(18)作者——LJS[你个小黑子这都还学不会嘛?你是真爱粉嘛?真是的 ~;以后请别侮辱我家鸽鸽]
Redis 如何高级应用之密码防护、数据持久化、基于文件追加方式持久化、主从同步、消息订阅类型与之对应的命令、事务从开始到执行会经历以下三个阶段、多数据库等保姆式具体操作详解步骤;举例说明、注意点及常见报错问题所对应的解决方法
|
1月前
|
机器学习/深度学习 NoSQL 关系型数据库
2024 RedisAnd Mysql基础与进阶操作系列(16-1)作者——LJS[你个小黑子这都还学不会嘛?你是真爱粉嘛?真是的 ~;以后请别侮辱我家鸽鸽]
Redis数据类型之string类型及操作:含【NCR/DECR/INCRBY/DECRBY、 GETSET、SETNX、SETRANGE/GETRANGE、SETBIT/GETBIT、MSET/MGET/MSETNX等具体操作详解步骤;举例说明、注意点及常见报错问题所对应的解决方法