欢迎光临散文网 会员登陆 & 注册

Leetcode Day11 3

2022-04-12 22:20 作者:我喜欢喝一点点  | 我要投稿

剑指 Offer 29. 顺时针打印矩阵

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。


示例 1:


输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]

输出:[1,2,3,6,9,8,7,4,5]

示例 2:


输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]

输出:[1,2,3,4,8,12,11,10,9,5,6,7]


嗯就是主要是为上下左右设定四个方向,遍历一次后,上下左右的边界随之改变。

另外debug了很久终于发现了问题,python一定要注意缩进啊啊啊

class Solution:

    def spiralOrder(self, matrix: List[List[int]]) -> List[int]:

        if not matrix:return []

        b=len(matrix)-1

        r=len(matrix[0])-1

        res=[]

        l=0

        t=0

        while True:

            for i in range(l,r+1):

                res.append(matrix[t][i])

            t+=1

            if t>b:break

            for i in range(t,b+1):

                res.append(matrix[i][r])

            r-=1

            if l>r:break

            for i in range(r,l-1,-1):

                res.append(matrix[b][i])

            b-=1

            if t>b:break

            for i in range(b,t-1,-1):

                res.append(matrix[i][l])

            l+=1

            if l>r:break

        return res



Leetcode Day11 3的评论 (共 条)

分享到微博请遵守国家法律