59. Spiral Matrix II - cocoder39/coco39_LC GitHub Wiki
difference with LC 54:
here M == N so if left > right or up > down: break
check can be skipped.
class Solution:
def generateMatrix(self, n: int) -> List[List[int]]:
left, right = 0, n-1
up, down = 0, n-1
matrix = [[0] * n for _ in range(n)]
cur = 1
while left <= right and up <= down:
for i in range(left, right+1):
matrix[up][i] = cur
cur += 1
up += 1
for i in range(up, down+1):
matrix[i][right] = cur
cur += 1
right -= 1
if left > right or up > down:
break
for i in range(right, left-1, -1):
matrix[down][i] = cur
cur += 1
down -= 1
for i in range(down, up-1, -1):
matrix[i][left] = cur
cur += 1
left += 1
return matrix