Leetcode54 螺旋矩阵

2020年1月18日 0 作者 折纸

题目描述

image.png

我的解法

class Solution:
    def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
        # 第一行
        # 最后一列
        # 最后一行倒序
        # 第一列倒序
        def spiral_coords(r1, c1, r2, c2):
            for c in range(c1, c2 + 1):
                yield r1, c
            for r in range(r1 + 1, r2 + 1):
                yield r, c2
            if r1 < r2 and c1 < c2:
                for c in range(c2 - 1, c1, -1):
                    yield r2, c
                for r in range(r2, r1, -1):
                    yield r, c1

        if not matrix: return []
        ans = []
        r1, r2 = 0, len(matrix) - 1
        c1, c2 = 0, len(matrix[0]) - 1
        while r1 <= r2 and c1 <= c2:
            for r, c in spiral_coords(r1, c1, r2, c2):
                ans.append(matrix[r][c])
            r1 += 1; r2 -= 1
            c1 += 1; c2 -= 1
        return ans

 

Note:

  • 这题不是靠自己写的,自己的思路是对的不会写啊 再琢磨琢磨