leetcood學習筆記-59-螺旋矩陣二
阿新 • • 發佈:2019-03-18
方法 type inf etc 其它 .com right div 就是
題目描述:
參考後的提交:
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
leetcood學習筆記-59-螺旋矩陣二