题目
给你一个正整数 n ,生成一个包含 1 到 n**2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
题解
# 模拟法
class Solution:
def generateMatrix(self, n: int) -> list:
# 模拟
top, bottom = 0, n-1
left, right = 0, n-1
val = 0
res = [[None for _ in range(n)] for _ in range(n)]
while val < n ** 2:
# 左上角向右
for i in range(left, right+1): # +1: range返回数值左闭右开
val += 1
res[top][i] = val
top = top + 1 # 上边界向下移
# 右上角向下
for i in range(top, bottom+1):
val += 1
res[i][right] = val
right = right - 1 # 右边界向左移
# 右下角向左
for i in range(right, left-1, -1):
val += 1
res[bottom][i] = val
bottom = bottom - 1 # 下边界向上移
# 左下角向上
for i in range(bottom, top-1, -1):
val += 1
res[i][left] = val
left = left + 1 # 左边界向右移
return res
if __name__ == '__main__':
r = Solution().generateMatrix(4)
for it in r:
print(it)
该代码实现了一个功能,即根据给定的正整数n,生成一个n×n的矩阵,矩阵中的元素从1开始,按顺时针方向螺旋排列。通过维护四个边界(top,bottom,left,right),逐步填充矩阵的四个象限。
377

被折叠的 条评论
为什么被折叠?



