首页 > 其他 > 详细

【剑指offer】 面试题29. 顺时针打印矩阵

时间:2020-05-22 22:15:46      阅读:56      评论:0      收藏:0      [点我收藏+]

题目描述

面试题29. 顺时针打印矩阵

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

示例 1:

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

分析

按照顺时针顺序分别是从左到右,上到下,右到左,下到上遍历一遍。然后在内侧再继续

因此可以设置四个标志位,一轮结束后标志位分别往里移动

解题

class Solution:
    def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
        if not matrix:
            return []
        l,r,t,b = 0,len(matrix[0])-1,0,len(matrix)-1
        res = []
        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 r<l: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 r<l:break
        return res

 

【剑指offer】 面试题29. 顺时针打印矩阵

原文:https://www.cnblogs.com/fuj905/p/12939913.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!