1. 程式人生 > >leetcood學習筆記-59-螺旋矩陣二

leetcood學習筆記-59-螺旋矩陣二

方法 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-螺旋矩陣二