应用题-数组专题-螺旋矩阵

管理员
**很直观的做法** ```python class Solution: def generateMatrix(self, n: int) -> List[List[int]]: ans = [ [ 0 for _ in range( n ) ] for _ in range( n ) ] # 右边界 下边界 左边界 上边界 r, b, l, t = n - 1, n - 1, 0, 0 # 模拟 value = 1 while value <= n * n: # 向右 for k in range( l, r + 1 ): ans[ t ][ k ] = value value += 1 t += 1 if value > n * n: break # 向下 for k in range( t, b + 1 ): ans[ k ][ r ] = value value += 1 r -= 1 if value > n * n: break # 向左 for k in range( r, l - 1, -1 ): ans[ b ][ k ] = value value += 1 b -= 1 if value > n * n: break # 向上 for k in range( b, t - 1 , -1 ): ans[ k ][ l ] = value value += 1 l += 1 return ans ``` **边界条件简化 推荐做法** ```python class Solution: def generateMatrix(self, n: int) -> List[List[int]]: ans = [ [ 0 for _ in range( n ) ] for _ in range( n ) ] # 右边界 下边界 左边界 上边界 r, b, l, t = n - 1, n - 1, 0, 0 # 模拟 value = 1 while l <= r and t <= b: # 向右 for k in range( l, r + 1 ): ans[ t ][ k ] = value value += 1 t += 1 # 向下 for k in range( t, b + 1 ): ans[ k ][ r ] = value value += 1 r -= 1 if t <= b: # for循环中可以约束 l <= r 所以简化判断条件为 t <= b # 向左 for k in range( r, l - 1, -1 ): ans[ b ][ k ] = value value += 1 b -= 1 if l <= r: # for循环中可以约束 t <= b 所以简化判断条件为 l <= r # 向上 for k in range( b, t - 1 , -1 ): ans[ k ][ l ] = value value += 1 l += 1 return ans ```
评论 0

发表评论 取消回复

Shift+Enter 换行  ·  Enter 发送
还没有评论,来发表第一条吧