原题目
Given a positive integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
Example:
Input: 3 Output: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]
思路
第一遍解法
网上好的解法
class Solution:
def generateMatrix(self, n):
ans, lo = [[n*n]], n*n
while lo > 1:
lo, hi = lo-len(ans), lo
ans = [[i for i in range(lo, hi)]] + [list(j) for j in zip(*ans[::-1])]
return ans
从空白矩阵开始向矩阵里面添加数字。从 9 开始添加直到添加 1 停止。每次添加完之后都将矩阵顺时针旋转,再将新的数字加到旋转后的矩阵上面一行。原答案链接
|| => |9| => |8| |6 7| |4 5| |1 2 3|
|9| => |9 8| => |9 6| => |8 9 4|
|8 7| |7 6 5|
自己可以改进的地方
最简代码