题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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
li = []
lengthi = len(matrix)
lengthj = len(matrix[0])
for i in range(lengthi):
for j in range(i,lengthj-i):
li.append(matrix[i][j])
if j == lengthj - i - 1:
for k in range(i+1,lengthi-i):
li.append(matrix[k][j])
if k == lengthi -i-1:
for l in range(lengthj-i-2,i-1,-1):
li.append(matrix[k][l])
if l == i :
for m in range(lengthi-i-2,i,-1):
li.append(matrix[m][l])
if lengthi-i-2 <= i: #其实我看有人不是这样判断的,但是我觉得这样其实相对来说也比较好理解,其实每次都会做完关于最外层的一次循环,所以我其实只需要判断是不是还可以继续最外层循环就好,这里一定要进行判断,否则会重复打印一些元素,或者在内部循环中去做相应判断,我觉得这样是最简单明了的
print li
return li