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

猜你喜欢

转载自www.cnblogs.com/oldby/p/10551448.html