【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)]
浙公网安备 33010602011771号