Leetcode 59. Spiral Matrix II

版权声明:本文为博主原创文章,未经博主允许不得转载。 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

猜你喜欢

转载自blog.csdn.net/u013596119/article/details/82463150