·题目描述
给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]
示例 2:输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
输出:[1,2,3,4,8,12,11,10,9,5,6,7]
·解题思路
1.螺旋 == 绕圈。所以就是绕圈遍历矩阵
2.遍历顺序:第一排的从左至右;最右列的从上至下;最低行的从右至左;最左边的从下至上
3.需要注意的是,第一排遍历完,top += 1;最右边,right -= 1;最下边 bottom -= 1;最左边 left += 1
·代码实现
class Solution(object):def spiralOrder(self, matrix):if matrix == []:return []result = []top , bottom = 0, len(matrix) - 1left , right = 0, len(matrix[0]) - 1while top <= bottom and left <= right:for i in range(left , right + 1):result.append(matrix[top][i])top += 1for i in range(top, bottom + 1):result.append(matrix[i][right])right -= 1for j in range(right, left -1, -1):result.append(matrix[bottom][j])bottom -= 1for j in range(bottom, top -1 , -1):result.append(matrix[j][left])left += 1return result