给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:
输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]
面试频率较高
1. 先定义一个空矩阵
2. startx表示行起始 starty表示列起始
3. 左闭右开原则,从左到右,从上到下,从右到左,从下到上开始循环赋值,一共是四个循环
4. 注意偶数和奇数,奇数需要给中心值赋值
class Solution(object):def generateMatrix(self, n):""":type n: int:rtype: List[List[int]]"""nums = [ [0]*n for _ in range(n)]startx, starty = 0,0 // startx表示行 starty表示列loop, mid = n // 2, n // 2count = 1for offset in range(1, loop + 1):for i in range(starty,n - offset):nums[startx][i] = countcount += 1for i in range(startx,n - offset):nums[i][n - offset] = countcount += 1for i in range(n - offset,starty,-1):nums[n - offset][i] = countcount += 1for i in range(n - offset,startx,-1):nums[i][starty] = countcount += 1 startx += 1starty += 1if n % 2 != 0:nums[mid][mid] = countreturn nums