题目描述

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下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.

解题思路

判断方向,每打印一行或一列之后向中心退一格。

  1. class Solution:
  2. # matrix类型为二维列表,需要返回列表
  3. def printMatrix(self, matrix):
  4. # write code here
  5. result = []
  6. r1,r2 = 0,len(matrix)-1
  7. c1,c2 = 0,len(matrix[0])-1
  8. while r1<=r2 and c1<=c2:
  9. for i in range(c1,c2+1):
  10. result.append(matrix[r1][i])
  11. for i in range(r1+1,r2+1):
  12. result.append(matrix[i][c2])
  13. if r1 != r2:
  14. for i in range(c2-1,c1-1,-1):
  15. result.append(matrix[r2][i])
  16. if c1 != c2:
  17. for i in range(r2-1,r1,-1):
  18. result.append(matrix[i][c1])
  19. r1 += 1
  20. r2 -= 1
  21. c1 += 1
  22. c2 -= 1
  23. return result