【Leetcode】59. 螺旋矩阵II

给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。

示例:

输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]

面试频率较高

1. 先定义一个空矩阵
2. startx表示行起始 starty表示列起始
3. 左闭右开原则,从左到右,从上到下,从右到左,从下到上开始循环赋值,一共是四个循环
4. 注意偶数和奇数,奇数需要给中心值赋值

class Solution(object):
    def generateMatrix(self, n):
        """
        :type n: int
        :rtype: List[List[int]]
        """

        nums = [ [0]*n for _ in range(n)]

        startx, starty = 0,0 // startx表示行 starty表示列
        loop, mid = n // 2, n // 2

        count = 1

        for offset in range(1, loop + 1):
            for i in range(starty,n - offset):
                nums[startx][i] = count
                count += 1
            for i in range(startx,n - offset):
                nums[i][n - offset] = count
                count += 1
            for i in range(n - offset,starty,-1):
                nums[n - offset][i] = count
                count += 1
            for i in range(n - offset,startx,-1):
                nums[i][starty] = count
                count += 1  
            startx += 1
            starty += 1
        
        if  n % 2 != 0:
            nums[mid][mid] = count

        return nums

猜你喜欢

转载自blog.csdn.net/weixin_42322991/article/details/131605078