假设我们有一个正整数n,我们必须生成一个具有n2个元素的螺旋矩阵的方阵。因此,如果n = 5,则矩阵将为-
1 | 2 | 3 | 4 |
12 | 13 | 14 | 5 |
11 | 16 | 15 | 6 |
10 | 9 | 8 | 7 |
让我们看看步骤-
设置(row1,col1):=(0,0)和(row2,col2):=(n,n),创建一个称为res的矩阵,然后将其填充为0,然后设置num:= 1
而num <= n2,
res [i,col1] = num,以num为1
res [row2 – 1,i] = num,以num为1
如果num> n2,则中断
res [i,col2-1] = num,以num为1
如果num> n2,则中断
res [row1,i] = num,以num为1
如果num> n2,则中断
对于在col1到col2范围内的i,
对于第1行+1至第2行的i,
因为我的范围是col2 – 2到col1 – 1
对于范围2-2到范围1的i,
将row1加1,将row2加1,将col1加1,并将col2加1
返回资源
让我们看下面的实现以更好地理解-
class Solution(object): def generateMatrix(self, n): row1 = 0 col1 = 0 row2 = n col2 = n result = [ [0 for i in range(n)] for j in range(n)] num = 1 while num<=n**2: for i in range(col1,col2): result[row1][i] = num num+=1 if num > n**2: break for i in range(row1+1,row2): result[i][col2-1] = num num+=1 if num > n**2: break for i in range(col2-2,col1-1,-1): result[row2-1][i] = num num+=1 if num > n**2: break for i in range(row2-2,row1,-1): result[i][col1] = num num+=1 row1+=1 row2-=1 col1+=1 col2-=1 #print(result) return result ob1 = Solution() print(ob1.generateMatrix(4))
4
输出结果
[[1, 2, 3, 4], [12, 13, 14, 5], [11, 16, 15, 6], [10, 9, 8, 7]]