Python描述 LeetCode 59. 螺旋矩阵 II
Posted 亓官劼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python描述 LeetCode 59. 螺旋矩阵 II相关的知识,希望对你有一定的参考价值。
Python描述 LeetCode 59. 螺旋矩阵 II
大家好,我是亓官劼(qí guān jié ),在【亓官劼】公众号、CSDN、GitHub、B站等平台分享一些技术博文,主要包括前端开发、python后端开发、小程序开发、数据结构与算法、docker、Linux常用运维、NLP等相关技术博文,时光荏苒,未来可期,加油~
如果喜欢博主的文章可以关注博主的个人公众号【亓官劼】(qí guān jié),里面的文章更全更新更快。如果有需要找博主的话可以在公众号后台留言,我会尽快回复消息.
本文原创为【亓官劼】(qí guān jié ),请大家支持原创,部分平台一直在恶意盗取博主的文章!!! 全部文章请关注微信公众号【亓官劼】。
题目
给你一个正整数 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
Python描述
和螺旋矩阵一样做就可以,先反过来即可,一样的思路。
也可以使用一个cir来控制第几圈来填入
class Solution:
def generateMatrix(self, n: int) -> List[List[int]]:
res = [[0 for _ in range(n)] for __ in range(n)]
cnt = 1
dr = [[0, 1], [1, 0], [0, -1], [-1, 0]]
d = 0
i = j = 0
while cnt <= n*n:
while 0 <= i < n and 0 <= j < n and res[i][j] == 0 and cnt <= n*n:
res[i][j] = cnt
cnt += 1
i, j = i + dr[d][0], j + dr[d][1]
i, j = i - dr[d][0], j - dr[d][1]
for _ in range(4):
d = (d + 1) % 4
ni, nj = i + dr[d][0], j + dr[d][1]
if 0 <= ni < n and 0 <= nj < n and res[ni][nj] == 0:
i,j = ni,nj
break
return res
以上是关于Python描述 LeetCode 59. 螺旋矩阵 II的主要内容,如果未能解决你的问题,请参考以下文章