leetcode:59. Spiral Matrix II

Problem

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 ]
]

Solution

解法类似于旋转取值,只不过换成了填值,而且矩阵一定是N×N的,处理起来比较简单

class Solution:
    def generateMatrix(self, n: int) -> List[List[int]]:
        if n==0:
            return []
        res = [[0 for _ in range(n)] for _ in range(n)]
        left,right,top,floor=0,n-1,0,n-1
        num = 1
        while left<right or top<floor:
            for i in range(left,right):
                res[top][i] = num
                num += 1
            for i in range(top,floor):
                res[i][right] = num
                num += 1
            for i in range(right,left,-1):
                res[floor][i] = num
                num += 1
            for i in range(floor,top,-1):
                res[i][left] = num
                num += 1
            left,right,top,floor=left+1,right-1,top+1,floor-1
        if left==right:
            res[top][left] = num
        return res
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值