File tree 1 file changed +36
-0
lines changed
1 file changed +36
-0
lines changed Original file line number Diff line number Diff line change
1
+ #https://leetcode.com/explore/challenge/card/december-leetcoding-challenge/569/week-1-december-1st-december-7th/3557/
2
+ class Solution :
3
+ def generateMatrix (self , n : int ) -> List [List [int ]]:
4
+ l = [[i for i in range (1 ,n + 1 )] for i in range (n )]
5
+ k = n
6
+ for i in range (n // 2 ):
7
+ if n > 1 :
8
+ # diagonal 4*(k-1)
9
+ if i == 0 :
10
+ l [i + 1 ][i ]= 4 * (k - 1 )
11
+ else :
12
+ l [i + 1 ][i ]= l [i ][i - 1 ]+ 4 * (k - 1 )
13
+ # top left-right
14
+ for j in range (i ,n - i ):
15
+ l [i ][j ]= l [i ][j - 1 ]+ 1
16
+ # left top-bottom
17
+ for j in range (i + 1 ,n - i + 1 ):
18
+ l [j ][i - 1 ]= l [j - 1 ][i - 1 ]- 1
19
+ #bottom left-right
20
+ for j in range (i ,n - i ):
21
+ l [n - i ][j ]= l [n - i ][j - 1 ]- 1
22
+ # right top-bottom
23
+ for j in range (i ,n - i + 1 ):
24
+ l [j ][n - i ]= l [j - 1 ][n - i ]+ 1
25
+
26
+ k -= 2
27
+ if n > 1 :
28
+ if n % 2 :
29
+ l [n // 2 ][n // 2 ]= l [n // 2 ][n // 2 - 1 ]+ 1
30
+ l [n // 2 ][n // 2 + 1 ]= l [n // 2 - 1 ][n // 2 + 1 ]+ 1
31
+ l [n // 2 + 1 ][n // 2 - 1 ]= l [n // 2 ][n // 2 - 1 ]- 1
32
+ l [n // 2 + 1 ][n // 2 ]= l [n // 2 + 1 ][n // 2 - 1 ]- 1
33
+ l [n // 2 + 1 ][n // 2 + 1 ]= l [n // 2 + 1 ][n // 2 ]- 1
34
+ else :
35
+ l [n // 2 ][n // 2 ]= l [n // 2 ][n // 2 - 1 ]- 1
36
+ return l
You can’t perform that action at this time.
0 commit comments