Leetcode 54 螺旋矩阵/59 螺旋矩阵II Python

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010870545/article/details/82813134

54 螺旋矩阵

class Solution(object):
    def spiralOrder(self, matrix):
        """
        :type matrix: List[List[int]]
        :rtype: List[int]
        """
        rown = len(matrix)
        coln = len(matrix[0]) if rown > 0 else 0
        total = rown * coln

        ans = []
        i = 0
        while len(ans) < total:
            for rightcol in range(i, coln-i):
                ans.append(matrix[i][rightcol])
            downrow = -1 # 越界标记
            for downrow in range(i+1, rown - i):
                ans.append(matrix[downrow][rightcol])
            if downrow == -1:
                break
            icol = -1
            for icol in range(rightcol-1, -1+i, -1):
                ans.append(matrix[downrow][icol])
            if icol == -1:
                break
            for uprow in range(downrow-1, i, -1):
                ans.append(matrix[uprow][icol])
            i += 1
        return ans

59 螺旋矩阵II

class Solution(object):
    def generateMatrix(self, n):
        """
        :type n: int
        :rtype: List[List[int]]
        """
        ans = [[0] * n for _ in range(n)]

        i = 0
        j = 1
        while j <= n*n:
            for rightcol in range(i, n-i):
                ans[i][rightcol] = j
                j += 1
            
            downrow = -1
            for downrow in range(i+1, n-i):
                ans[downrow][rightcol] = j
                j += 1
            if downrow == -1:
                break
            icol = -1
            for icol in range(rightcol-1, -1+i, -1):
                ans[downrow][icol] = j
                j += 1
            if icol == -1:
                break
            for uprow in range(downrow-1, i, -1):
                ans[uprow][icol] = j
                j += 1
            i += 1
        return ans

猜你喜欢

转载自blog.csdn.net/u010870545/article/details/82813134