题目:​​原题链接​(中等)

标签:数组

解法

时间复杂度

空间复杂度

执行用时

Ans 1 (Python)

O ( N 2 )

O ( 1 )

44ms (33.11%)

Ans 2 (Python)

Ans 3 (Python)

解法一:

class Solution:
def generateMatrix(self, n: int) -> List[List[int]]:
ans = [[0] * n for _ in range(n)]

# 方向列表
flags = [(0, 1), (1, 0), (0, -1), (-1, 0)] # 右->下->左->上

x1, y1, flag = 0, 0, 0 # 当前坐标、方向
for i in range(1, n * n + 1):
ans[x1][y1] = i

x2, y2 = x1 + flags[flag][0], y1 + flags[flag][1]
# 如果前方可以移动
if 0 <= x2 < n and 0 <= y2 < n and ans[x2][y2] == 0:
x1, y1 = x2, y2

# 如果前方不可以移动
else:
flag = (flag + 1) % 4
x1, y1 = x1 + flags[flag][0], y1 + flags[flag][1]

return ans