leetcode 059 Spiral Matrix II 螺旋矩阵 II python 最高效解

所有Leetcode题目不定期汇总在 Github, 欢迎大家批评指正,讨论交流。
'''
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 ]
]


'''


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

        # Approach one
        res = [[ 0  for _ in range(n)] for _ in range(n)]    # 注意, 不可用 n *[n *[0]] 初始化
        right , down , up ,left = True, False, False, False
        i , j = 0 , 0
        for num in range(1 , n*n+1):
            if right:
                res[i][j] = num
                j += 1
                if j == n or res[i][j] != 0:
                    right, down = False, True
                    j -= 1
                    i += 1
                    continue
            if down:
                res[i][j] = num
                i += 1
                if i == n or res[i][j] != 0:
                    down, left = False, True
                    i -= 1
                    j -= 1
                    continue
            if left:
                res[i][j] = num
                j -= 1
                if j == -1 or res[i][j] != 0:
                    left, up = False, True
                    j += 1
                    i -= 1
                    continue
            if up:
                res[i][j] = num
                i -= 1
                if i == -1 or res[i][j] != 0:
                    up, right = False, True
                    i += 1
                    j += 1
                    continue
        return res

所有Leetcode题目不定期汇总在 Github, 欢迎大家批评指正,讨论交流。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值