**1.初始化二维列表:**比如创建并初始化全0二维列表:result = [[0] * n for _ in range(n)],不要使用result = [[0] * n] * n,因为这样在修改值的时候,会把每列都修改。原因是因为Python的机制,*n并没有开辟新空间,都指向同一块内存,但加上[]会将括号内部看作一个整体,列表类型,开辟独立的空间。
代码:
python复制代码
class Solution:
def generateMatrix(self, n: int) -> List[List[int]]:
result = [[0] * n for _ in range(n)]
row = col = n - 1
rh = 1
ch = 0
flag = 1
r = c = 0
for num in range(n ** 2):
if flag == 1:
result[r][c] = num + 1
if c == col:
col -= 1
r += 1
flag = 2
else:
c += 1
elif flag == 2:
result[r][c] = num + 1
if r == row:
row -= 1
c -= 1
flag = 3
else:
r += 1
elif flag == 3:
result[r][c] = num + 1
if c == ch:
ch += 1
r -= 1
flag = 4
else:
c -= 1
else:
result[r][c] = num + 1
if r == rh:
rh += 1
c += 1
flag = 1
else:
r -= 1
return result