LeetCode:59. 螺旋矩阵 II(python)
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:
输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
思路:
- 设置顺时针方向
- 遍历矩阵,根据边界和是否访问过该节点来更新方向
附代码(Python):
class Solution:
def generateMatrix(self, n):
# 顺时针方向(右下左上)
dx = [0, 1, 0, -1]
dy = [1, 0, -1, 0]
dn = 0 # 方向指针
res = [[0]*n for _ in range(n)] # 初始化
x = y = 0 # 位置
for i in range(1, n*n+1):
res[x][y] = i
# 下一步位置
temp_x = x + dx[dn]
temp_y = y + dy[dn]
# 判断下一步位置是否合理,若合理则更新位置,若不合理则改变方向并更新位置
if 0<=temp_x<n and 0<=temp_y<n and res[temp_x][temp_y]==0:
x, y = temp_x, temp_y
else:
dn = (dn+1) % 4
x += dx[dn]
y += dy[dn]
return res
test = Solution()
n = 3
test.generateMatrix(n)
[[1, 2, 3], [8, 9, 4], [7, 6, 5]]
来源:CSDN
作者:痴迷、淡然~
链接:https://blog.csdn.net/qq_36512295/article/details/100670142