Leetcode 59.螺旋矩阵II

class Solution(object):
    def generateMatrix(self, n):
        """
        :type n: int
        :rtype: List[List[int]]
        """
        top, bottom, right, left = 0, n - 1, n - 1, 0        # 四个边界值
        array = [[None for _ in range(n)] for _ in range(n)] # 创建二维空数组
        temp = [None] * (n ** 2)  # 创建一维数组存储 1-n^2 的值
        x, y = None, None # 活动下标
        i = 0  # 赋值下标
        for transient in range(n ** 2):
            temp[transient] = transient + 1

        while left < right:
            y = left
            while y < right: # 上边向右赋值
                array[top][y] = temp[i]
                y += 1
                i += 1
            x = top
            while x < bottom: # 右边向下赋值
                array[x][right] = temp[i]
                x += 1
                i += 1
            y = right
            while y > left:   # 下边向左赋值
                array[bottom][y] = temp[i]
                y -= 1
                i += 1
            x = bottom  
            while x > top:    # 左边向上赋值
                array[x][left] = temp[i]
                x -= 1
                i += 1

            bottom -= 1
            top += 1
            right -= 1
            left += 1   # 一次循环操作后边界缩小
        if n % 2 != 0:  # 奇数对中心值特殊处理,此时top,right,bottom,left值相同
            array[top][right] = temp[i]
        return array

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值