题目描述:
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.
解题方案:
顺时针打印,一次循环打印四个方向,每次打印时,需要注意不能重复打印,最后两次打印需要判断一下。
# -*- coding:utf-8 -*-
class Solution:
# matrix类型为二维列表,需要返回列表
def printMatrix(self, matrix):
# write code here
res = []
left = 0
right = len(matrix[0])
top = 0
bottom = len(matrix)
if not (right or bottom):
return res
while left < right and top < bottom:
for i in range(left, right):
res.append(matrix[top][i])
top += 1
for i in range(top, bottom):
res.append(matrix[i][right -1 ])
right -= 1
if top != bottom:
for i in range(right - 1, left - 1, -1):
res.append(matrix[bottom - 1][i])
bottom -= 1
if left != right:
for i in range(bottom - 1, top - 1, -1):
res.append(matrix[i][left])
left += 1
return res