leetcode#59 螺旋矩阵Ⅱ

题目要求:
按照顺时针螺旋顺序 构建一个n*n的螺旋矩阵

思路:
参照之前的54题输出螺旋矩阵的思路 将单圈拆开为四个部分。每个部分循环的长度是相同的。单圈循环完之后,起始坐标向右下移一个单位,单次循环长度减二。对于偶数阶矩阵,正常结束。对于奇数阶矩阵,因为循环长度会减到0,需要手动加入最后最中间的一个数。

在这里插入图片描述
如图 单圈拆分为黄红蓝绿四个部分。每个部分的长度均为2。第一圈的起始位置为(0,0)。长度=2 循环一圈之后,下一圈的起始位置为(1,1)长度为2-2 = 0 此时需要手动添加最后一位9 添加坐标就是当前的起始坐标。
对于偶数则会正常循环结束。

代码实现

class Solution:
    def generateMatrix(self, n):
        num = 1 
        row = 0
        time = n-1
        res = [[0]*n for _ in range(n)]
        begin_x = 0
        begin_y = 0
        while(num<(n*n)+1):
            row = begin_x
            if time ==0:
                res[begin_x][begin_y] = num
                return res
            for i in range(time):
                res[row][begin_y+i] = num
                if num==n*n:
                    return res
                num+=1
            col = begin_y+i+1
            for j in range(time):
                res[begin_x+j][col] = num
                if num == n * n:
                    return res
                num+=1

            row = begin_x+j+1
            for i in range(begin_y+time,begin_y,-1):
                res[row][i] = num
                if num == n * n:
                    return res
                num+=1

            col = i- 1
            for i in range(begin_x+time,begin_x,-1):
                res[i][col] = num
                if num == n * n:
                    return res
                num+=1

            time-=2
            begin_x+=1
            begin_y+=1

print(Solution().generateMatrix(5))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值