输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵:
则依次打印出数组: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
rows = len(matrix)
cols = len(matrix[0])
result = []
if rows == 0 and cols == 0:
return result
left, right, top, buttom = 0, cols - 1, 0, rows - 1
while left <= right and top <= buttom:
for i in range(left, right+1):
result.append(matrix[top][i])
for i in range(top+1, buttom+1):
result.append(matrix[i][right])
if top != buttom:
for i in range(left, right)[::-1]:
result.append(matrix[buttom][i])
if left != right:
for i in range(top+1, buttom)[::-1]:
result.append(matrix[i][left])
left += 1
top += 1
right -= 1
buttom -= 1
return result