版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013596119/article/details/82463150
Given a positive integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
Example:
Input: 3 Output: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]
Answer:
class Solution(object):
def printOuter(self,w,h,W,H,startNum):
if h==1:
for i in range(w):
self.m[(H-h)/2][(W-w)/2+i]=startNum
startNum+=1
return startNum
if w==1:
for j in range(h):
self.m[(H-h)/2+j][(W-w)/2]=startNum
startNum+=1
return startNum
for i in range(w):
self.m[(H-h)/2][(W-w)/2+i]=startNum
startNum+=1
for j in range(1,h):
self.m[(H-h)/2+j][(W-w)/2+w-1]=startNum
startNum+=1
for i in range(1,w):
self.m[(H-h)/2+h-1][(W-w)/2+w-1-i]=startNum
startNum+=1
for j in range(1,h-1):
self.m[(H-h)/2+h-1-j][(W-w)/2]=startNum
startNum+=1
return startNum
def generateMatrix(self, n):
"""
:type n: int
:rtype: List[List[int]]
"""
if n==0:
return []
self.m=[[0]*n for _ in range(n)]
w=n
h=n
startNum=1
while w>0 and h>0:
startNum=self.printOuter(w,h,n,n,startNum)
w-=2
h-=2
return self.m