@@ -191,33 +191,48 @@ class Solution {
191
191
192
192
python:
193
193
194
- ``` python
194
+ ``` python3
195
195
class Solution :
196
+
196
197
def generateMatrix (self , n : int ) -> List[List[int ]]:
197
- left, right, up, down = 0 , n- 1 , 0 , n- 1
198
- matrix = [ [0 ]* n for _ in range (n)]
199
- num = 1
200
- while left<= right and up<= down:
201
- # 填充左到右
202
- for i in range (left, right+ 1 ):
203
- matrix[up][i] = num
204
- num += 1
205
- up += 1
206
- # 填充上到下
207
- for i in range (up, down+ 1 ):
208
- matrix[i][right] = num
209
- num += 1
198
+ # 初始化要填充的正方形
199
+ matrix = [[0 ] * n for _ in range (n)]
200
+
201
+ left, right, up, down = 0 , n - 1 , 0 , n - 1
202
+ number = 1 # 要填充的数字
203
+
204
+ while left < right and up < down:
205
+
206
+ # 从左到右填充上边
207
+ for x in range (left, right):
208
+ matrix[up][x] = number
209
+ number += 1
210
+
211
+ # 从上到下填充右边
212
+ for y in range (up, down):
213
+ matrix[y][right] = number
214
+ number += 1
215
+
216
+ # 从右到左填充下边
217
+ for x in range (right, left, - 1 ):
218
+ matrix[down][x] = number
219
+ number += 1
220
+
221
+ # 从下到上填充左边
222
+ for y in range (down, up, - 1 ):
223
+ matrix[y][left] = number
224
+ number += 1
225
+
226
+ # 缩小要填充的范围
227
+ left += 1
210
228
right -= 1
211
- # 填充右到左
212
- for i in range (right, left- 1 , - 1 ):
213
- matrix[down][i] = num
214
- num += 1
229
+ up += 1
215
230
down -= 1
216
- # 填充下到上
217
- for i in range (down, up - 1 , - 1 ):
218
- matrix[i][left] = num
219
- num += 1
220
- left += 1
231
+
232
+ # 如果阶数为奇数,额外填充一次中心
233
+ if n % 2 :
234
+ matrix[n // 2 ][n // 2 ] = number
235
+
221
236
return matrix
222
237
```
223
238
0 commit comments