Python描述 LeetCode 59. 螺旋矩阵 II

Python描述 LeetCode 59. 螺旋矩阵 II

  大家好,我是亓官劼(qí guān jié ),在【亓官劼】公众号、CSDN、GitHub、B站等平台分享一些技术博文,主要包括前端开发、python后端开发、小程序开发、数据结构与算法、docker、Linux常用运维、NLP等相关技术博文,时光荏苒,未来可期,加油~

  如果喜欢博主的文章可以关注博主的个人公众号【亓官劼】(qí guān jié),里面的文章更全更新更快。如果有需要找博主的话可以在公众号后台留言,我会尽快回复消息.

在这里插入图片描述


本文原创为【亓官劼】(qí guān jié ),请大家支持原创,部分平台一直在恶意盗取博主的文章!!! 全部文章请关注微信公众号【亓官劼】。

题目

给你一个正整数 n ,生成一个包含 1n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix

示例 1:

img

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

示例 2:

输入:n = 1
输出:[[1]]

提示:

  • 1 <= n <= 20

Python描述

和螺旋矩阵一样做就可以,先反过来即可,一样的思路。

也可以使用一个cir来控制第几圈来填入

class Solution:
    def generateMatrix(self, n: int) -> List[List[int]]:
        res = [[0 for _ in range(n)] for __ in range(n)]
        cnt = 1
        dr = [[0, 1], [1, 0], [0, -1], [-1, 0]]
        d = 0
        i = j = 0
        while cnt <= n*n:
            while 0 <= i < n and 0 <= j < n and res[i][j] == 0 and cnt <= n*n:
                res[i][j] = cnt
                cnt += 1
                i, j = i + dr[d][0], j + dr[d][1]
            i, j = i - dr[d][0], j - dr[d][1]
            for _ in range(4):
                d = (d + 1) % 4
                ni, nj = i + dr[d][0], j + dr[d][1]
                if 0 <= ni < n and 0 <= nj < n and res[ni][nj] == 0:
                    i,j = ni,nj
                    break
        return res 
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亓官劼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值