面試題29:順時針打印矩陣

# -*- coding:utf-8 -*-
class Solution:
    # matrix類型爲二維列表,需要返回列表
    def printMatrix(self, matrix):
        # write code here
        if not matrix or len(matrix) <= 0 or len(matrix[0]) <= 0:
            return
        start = 0
        rows = len(matrix)
        columns = len(matrix[0])
        res = []
        while (columns > start * 2 and rows > start * 2):
            self.printMatrixInCircle(matrix, columns, rows, start, res)
            start += 1

        return res

    def printMatrixInCircle(self, matrix, columns, rows, start, res):
        endX = columns - 1 - start
        endY = rows - 1 - start

        # 從左到右打印一行
        for i in range(start, endX + 1):
            res.append(matrix[start][i])

        # 從上到下打印一列
        if start < endY:
            for i in range(start + 1, endY + 1):
                res.append(matrix[i][endX])

        # 從右到左打印一行
        if start < endX and start < endY:
            for i in range(endX - 1, start - 1, -1):
                res.append(matrix[endY][i])

        # 從下到上打印一列
        if start < endX and start < endY - 1:
            for i in range(endY - 1, start, -1):
                res.append(matrix[i][start])

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章