Python 實現螺旋矩陣 II
假設我們有一個正整數 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 時,
- 對於從 col1 到 col2 的 i,
- res[row1, i] = num,將 num 加 1
- 如果 num > n2,則中斷
- 對於從 row1 + 1 到 row2 的 i,
- res[i, col2-1] = num,將 num 加 1
- 如果 num > n2,則中斷
- 對於從 col2 – 2 到 col1 – 1 的 i,
- res[row2 – 1, i] = num,將 num 加 1
- 如果 num > n2,則中斷
- 對於從 row2 – 2 到 row1 的 i,
- res[i, col1] = num,將 num 加 1
- 將 row1 加 1,將 row2 減 1,將 col1 加 1,並將 col2 減 1
- 對於從 col1 到 col2 的 i,
- 返回 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]]
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP