Given an integern, generate a square matrix filled with elements from 1 ton2in spiral order.
For example,
Givenn=3,
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
Solution:
class Solution(object):
def generateMatrix(self, n):
"""
:type n: int
:rtype: List[List[int]]
"""
if n <= 0:
return []
result = [[0 for c in range(n)] for r in range(n)]
running = 1
r, c = 0, 0
m = n
p = n
while c < p and r < m:
for i in range(c, p):
result[r][i] = running
running += 1
r += 1
for i in range(r, m):
result[i][p - 1] = running
running += 1
p -= 1
if r < m:
for i in range(p - 1, c - 1, -1):
result[m - 1][i] = running
running += 1
m -= 1
if c < p:
for i in range(m - 1, r - 1, -1):
result[i][c] = running
running += 1
c += 1
return result