Python 中的螺旋矩阵 II
pythonserver side programmingprogramming更新于 2025/11/19 0:12:17
假设我们有一个正整数 n,我们必须生成一个按螺旋顺序排列的 n2 个元素的方阵。因此,如果 n = 5,则矩阵将为 −
| 1 | 2 | 3 | 4 |
| 12 | 13 | 14 | 5 |
| 11 | 16 | 15 | 6 |
| 10 | 9 | 8 | 7 |
让我们看看 −
- set (row1, col1) := (0, 0) and (row2, col2) := (n, n),并创建一个名为 res 的矩阵,然后用 0 填充它,并设置 num := 1
- while num <= n2,
- for i in range col1 to col2,
- res[row1, i] = num, incase num by 1
- if num > n2, then break
- for i in range row1 + 1 to row2,
- res[i, col2-1] = num, incase num by 1
- if num > n2, then break
- for i in range col2 – 2 down to col1 – 1,
- res[row2 – 1, i] = num,如果 num 减 1
- 如果 num > n2,则 break
- 对于范围从 row2 – 2 到 row1 的 i,
- res[i, col1] = num,如果 num 减 1
- 将 row1 增加 1,将 row2 减少 1,将 col1 增加 1,将 col2 减少 1
- for i in range col1 to col2,
- 返回 res
让我们看看下面的实现以便更好地理解 −
示例
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]]
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

