【LeetCode】59. 螺旋矩阵 II

题目

解法

遇到问题

小结

题目

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

示例:

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/spiral-matrix-ii

解法

思路:从例子中找规律,以圈为循环(外循环),对边进行迭代(内循环)。

需要定义4个变量来控制4条边的边界,即l,r,t,b分别控制左、右、上、下的边界。

import numpy as np
class Solution(object):
    def generateMatrix(self, n):
        l, r, t, b = 0, n - 1, 0, n - 1 
        mat = [[0 for _ in range(n)] for _ in range(n)]
        num, tar = 1, n * n
        while num <= tar:
            for i in range(l, r + 1): # left to right
                mat[t][i] = num
                num += 1
            t += 1
            for i in range(t, b + 1): # top to bottom
                mat[i][r] = num
                num += 1
            r -= 1
            for i in range(r, l - 1, -1): # right to left
                mat[b][i] = num
                num += 1
            b -= 1
            for i in range(b, t - 1, -1): # bottom to top
                mat[i][l] = num
                num += 1
            l += 1
        return mat

遇到问题

python的二维数组定义不知道怎么写。看了题解后才知道。。

mat = [[0 for _ in range(n)] for _ in range(n)]

小结

posted @ 2020-05-29 15:50  记录人生  阅读(123)  评论(0)    收藏  举报