Posted on 2023-05-10 16:52
Uriel 阅读(34)
评论(0) 编辑 收藏 引用 所属分类:
模拟 、
闲来无事重切Leet Code
类似54,反向操作,将1~n^2按螺旋次序填入n*n的二维数组,思路也和54一样
1 #59
2 #Runtime: 11 ms (Beats 96.98%)
3 #Memory: 13.2 MB (Beats 99.66%)
4
5 class Solution(object):
6 def generateMatrix(self, n):
7 """
8 :type n: int
9 :rtype: List[List[int]]
10 """
11 fg = [[0] * n for _ in range(n)]
12 fg[0][0] = 1
13 i, j, cnt, t = 0, 0, 1, 0
14 while cnt < n**2:
15 if t % 4 == 0:
16 while j < n - 1 and not fg[i][j + 1]:
17 j += 1
18 cnt += 1
19 fg[i][j] = cnt
20 elif t % 4 == 1:
21 while i < n - 1 and not fg[i + 1][j]:
22 i += 1
23 cnt += 1
24 fg[i][j] = cnt
25 elif t % 4 == 2:
26 while j >= 0 and not fg[i][j - 1]:
27 j -= 1
28 cnt += 1
29 fg[i][j] = cnt
30 elif t % 4 == 3:
31 while i >= 0 and not fg[i - 1][j]:
32 i -= 1
33 cnt += 1
34 fg[i][j] = cnt
35 t += 1
36 return fg