题目解析:
与leecode 54一样的思路,只不过后者是输出,前者是填入。与后者相比,螺旋矩阵II需要提前初始化一个全为0的n*n的二维数组,并且设置一个标量初始值为1,每走一步就加1,并将其填入每一步的位置。
class Solution(object):
def generateMatrix(self, n):
"""
:type n: int
:rtype: List[List[int]]
"""
L = [[0] * n for i in range(n)] # 初始化全为0的二维数组
l = 0
r = n-1
t = 1
b = n-1
i, j = 0, 0
index = 1
L[i][j] = index
while j > 1 or j < r or i > t or i < b:
while j < r:
index += 1
j += 1
L[i][j] = index
r -= 1
if index == n**2: # 因为整个矩阵只有n**2个元素,当已经遍历了n**2个位置,就已经达到了返回条件
break
while i < b:
index += 1
i += 1
L[i][j] = index
b -= 1
if index == n**2:
break
while j > l:
index += 1
j -= 1
L[i][j] = index
l += 1
if index == n**2:
break
while i > t:
index += 1
i -= 1
L[i][j] = index
t += 1
if index == n**2:
break
return L