题目
顺时针打印矩阵
一、思路一
通过题目,可以知道我们的打印顺序其实是:
不难看出,其实是对这个矩阵进行了从外到内一圈一圈的遍历。
首先打印最外层,首先打印第一行,在打印最后一列,然后打印最后一行,在打印第一列,直到indexi=(1,0)这个位置,需要进入下一层的打印:
在第二层,仍旧是依次打印第二层中的第一行、最后一列、最后一行、第一列直到重复的位置。
有更多的曾,依旧是上述的打印规律。
因此需要重点注意的地方:
1.如何区分当前是否需要跳转到下一层
2.当前层遍历的四个顶点的index
3.何时结束遍历
解决这三个问题,需要:
1.一个标志当前index是否遍历过的矩阵:bool_matrix
2.每当遍历到当前层已经遍历过的位置,调整四个顶点的范围。
3.当走过的路径==当前矩阵数字的个数时,结束遍历
def spiralOrder(matrix):
if not matrix:
return []
rows = len(matrix)
cols = len(matrix[0])
bool_matrix = [[False