Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
For example,
Given n = 3
,
You should return the following matrix:[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
Given n =
3
,Solution:
class Solution: # @return a list of lists of integer def generateMatrix(self, n): matrix=[]; for i in range(0,n): matrix.append([]) for j in range(0,n): matrix[i].append(0) direction = "right" row = 0 col = 0 for count in range(1,n*n+1): matrix[row][col] = count if direction == "right": col = col + 1; if col >= n-1 or matrix[row][col+1] != 0: direction = "down" elif direction == "down": row = row + 1; if row >= n-1 or matrix[row+1][col] != 0: direction = "left" elif direction == "left": col = col - 1; if col <= 0 or matrix[row][col-1] != 0: direction = "up" elif direction == "up": row = row - 1; if row <= 0 or matrix[row-1][col] != 0: direction = "right" return matrix
No comments :
Post a Comment