leetcood学习笔记-59-螺旋矩阵二
作者:互联网
题目描述:
参考后的提交:
class Solution: def generateMatrix(self, n: int): #l = [[0] * n] * n 此创建方法错误 l = [[] for i in range(n)] for i in range(n): for j in range(n): l[i].append(0)##l=[[o for i in range(n)]for i in range[n]] #print(l) j,m = 0,1 while m<=n*n: for i in range(j,n-j): l[j][i] = m m += 1 for i in range(j+1,n-j): l[i][n-j-1] = m m += 1 for i in range(n-j-2,j-1,-1): l[n-j-1][i] = m m += 1 for i in range(n-j-2,j,-1): l[i][j] = m m += 1 j += 1 return l
注意:
l = [[0]*3]*3用这种方法生成二维列表时 改变其中一值,其它列相对应值改变!也就是说matrix = [array] * 3操作中,只是创建3个指向array的引用,所以一旦array改变,matrix中3个list也会随之改变。
创建二维数组的方法:matrix = [[0 for i in range(3)] for i in range(3)]
其他:
class Solution(object): def generateMatrix(self, n): """ :type n: int :rtype: List[List[int]] """ res = [[0 for __ in range(n)] for _ in range(n)] up,down,left,right = 0,n,0,n #上下左右边界 index = 1 while index <= n**2: for i in range(left,right): #向右 res[up][i] = index index += 1 up += 1 for i in range(up,down): #向下 res[i][right-1] = index index += 1 right -= 1 for i in range(right-1,left-1,-1): #向左 res[down-1][i] = index index += 1 down -= 1 for i in range(down-1,up-1,-1): #向上 res[i][left] = index index += 1 left += 1 return res
标签:index,59,matrix,int,矩阵,generateMatrix,range,array,leetcood 来源: https://www.cnblogs.com/oldby/p/10551448.html