这题比较简单,就是理解循环规则即可。但边界条件比较不好判断,可采用循环不变量原则进行处理,就是采用一个边界原则。
# -*- coding: utf-8 -*-
"""
@Time : 2022/8/9 15:21
@Author : FJC
@File : 螺旋数组II.py
@Software: win10 python3.7
"""
class Solution:
def generateMatrix(self,n):
nums=[[0]*n for _ in range(n)]
count,j=1,0
mid=n//2
for offset in range(mid):
# 左闭右开
for y in range(j,n-j-1):
print(count)
nums[offset][y]=count
count+=1
print("-----")
for x in range(j,n-j-1):
print(count)
nums[x][n-j-1]=count
count+=1
print("-----")
for y in range(n-1-j,j,-1):
print(count)
nums[n-j-1][y]=count
count+=1
print("-----")
for x in range(n-1-j,j,-1):
print(count)
nums[x][j]=count
count+=1
j += 1
if n%2!=0:
nums[mid][mid]=count
return nums
solution=Solution()
print(solution.generateMatrix(5))