-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path059. Spiral Matrix II
More file actions
46 lines (33 loc) · 1.21 KB
/
Copy path059. Spiral Matrix II
File metadata and controls
46 lines (33 loc) · 1.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#!/usr/bin/env python3
__author__ = 'Wei Mu'
class Solution:
def generateMatrix(self, n: 'int') -> 'List[List[int]]':
if n == 0:
return([])
global ans
ans = []
for i in range(n):
ans.append([None] * n)
start_num = 1
row_num = 0
while row_num <= n//2:
start_num, row_num = self.fill_spiral(start_num, row_num, n)
return ans
def fill_spiral(self, start_num, row_num, n):
global ans
if n % 2 == 1 and row_num == n//2:
ans[row_num][row_num] = start_num
return(start_num+1, row_num+1)
for i in range(row_num, n-row_num-1):
ans[row_num][i] = start_num
start_num += 1
for i in range(row_num, n-row_num-1):
ans[i][n-1-row_num] = start_num
start_num += 1
for i in range(n-1-row_num, row_num, -1):
ans[n-1-row_num][i] = start_num
start_num += 1
for i in range(n-1-row_num, row_num, -1):
ans[i][row_num] = start_num
start_num += 1
return(start_num, row_num+1)