题解 | #顺时针打印矩阵#

顺时针打印矩阵

https://www.nowcoder.com/practice/9b4c81a02cd34f76be2659fa0d54342a

# -*- coding:utf-8 -*-
class Solution:
    # matrix类型为二维列表,需要返回列表
    def printMatrix(self, matrix):
        res = []
        m = len(matrix)
        n = len(matrix[0])
        sum = n * m
        if m == 1 and n != 0: 
            return matrix[0]
        if n == 1:
            for index in range(m):
                res.append(matrix[index][0])
            return res
        i,j = 0,0
        circle = 0
        left,right,upper,lower = 0,0,0,0
        while True:
            while right < n - 1:
                res.append(matrix[i][j])
                sum -= 1
                j += 1
                right += 1
            if sum == 0:
                break
            while lower < m - 1:
                res.append(matrix[i][j])
                sum -= 1
                i += 1
                lower += 1
            if sum == 0:
                break
            while left < n - 1:
                res.append(matrix[i][j])
                sum -= 1
                j -= 1
                left += 1
            if sum == 0:
                break
            while upper < m - 1:
                res.append(matrix[i][j])
                sum -= 1
                i -= 1
                upper += 1
            if sum == 0:
                break
            circle += 1
            i,j = circle,circle
            m , n = m-2, n-2
            left,right,upper,lower = 0,0,0,0
            
            if m == 1:
                while(sum):
                    res.append(matrix[i][j])
                    sum -= 1
                    j += 1
            if n == 1:
                while(sum):
                    res.append(matrix[i][j])
                    sum -= 1
                    i += 1
            if sum == 0:
                break
        return res

全部评论

相关推荐

06-20 19:40
中原工学院 Java
网络存储:十几天不会让你拉人办卡就结束了吧?
点赞 评论 收藏
分享
点赞 评论 收藏
分享
程序员小白条:你不是有一段实习了吗,现在找中大厂实习?过段时间要秋招了
我的简历长这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务