LeetCode54 螺旋矩阵

LeetCode54 螺旋矩阵

class Solution:
    def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
        
        m, n = len(matrix), len(matrix[0])
        l, r, t, b, cnt, tar, ans = 0, n - 1, 0, m - 1, 0, m * n, []

        while True:

            for i in range(l, r + 1):  # left -> right
                ans.append(matrix[t][i])
                cnt = cnt + 1
            t = t + 1
            if cnt == tar: break

            for i in range(t, b + 1):  # top -> bottom
                ans.append(matrix[i][r])
                cnt = cnt + 1
            r = r - 1
            if cnt == tar: break

            for i in range(r, l - 1, -1):  # right -> left
                ans.append(matrix[b][i])
                cnt = cnt + 1
            b = b - 1
            if cnt == tar: break

            for i in range(b, t - 1, -1):  # bottom -> top
                ans.append(matrix[i][l])
                cnt = cnt + 1
            l = l + 1
            if cnt == tar: break

        return ans[:]

posted on 2022-08-15 11:06  solvit  阅读(28)  评论(0)    收藏  举报

导航