leetcode_59. 螺旋矩阵 II

举报
悲恋花丶无心之人 发表于 2021/03/17 01:10:18 2021/03/17
【摘要】 目录 一、题目内容 二、解题思路 三、代码 一、题目内容 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1: 输入:n = 3 输出:[[1,2,3],[8,9,4],[7,6,5]] 示例 2...

目录

一、题目内容

二、解题思路

三、代码


一、题目内容

给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。

示例 1:

输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]

示例 2:

输入:n = 1
输出:[[1]]

提示:

1 <= n <= 20

二、解题思路

leetcode_54. 螺旋矩阵类似,只需要按照顺序逐次赋值即可。

三、代码


  
  1. class Solution:
  2. def generateMatrix(self, n: int):
  3. up, down, left, right = 0, n - 1, 0, n - 1 # 上下左右
  4. martix = [[0 for _ in range(n)] for _ in range(n)]
  5. num = 1
  6. while True:
  7. # →
  8. for i in range(left, right + 1):
  9. martix[up][i] = num
  10. num += 1
  11. up += 1
  12. if up > down:
  13. break
  14. # ↓
  15. for i in range(up, down + 1):
  16. martix[i][right] = num
  17. num += 1
  18. right -= 1
  19. if right < left:
  20. break
  21. # ←
  22. for i in range(right, left - 1, -1):
  23. martix[down][i] = num
  24. num += 1
  25. down -= 1
  26. if down < up:
  27. break
  28. # ↑
  29. for i in range(down, up - 1, -1):
  30. martix[i][left] = num
  31. num += 1
  32. left += 1
  33. if left > right:
  34. break
  35. return martix
  36. if __name__ == '__main__':
  37. # n = 3
  38. n = 1
  39. s = Solution()
  40. ans = s.generateMatrix(n)
  41. print(ans)

文章来源: nickhuang1996.blog.csdn.net,作者:悲恋花丶无心之人,版权归原作者所有,如需转载,请联系作者。

原文链接:nickhuang1996.blog.csdn.net/article/details/114867993

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。