给你一个 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]
class Solution: def spiralOrder(self, matrix: List[List[int]]) -> List[int]: columns, rows = len(matrix), len(matrix[0]) # 计算矩阵的长度很宽度 # top, bottom, left, right 分别表示矩阵的列的最小索引值和列的最大索引值,行的最小索引值和行的最大索引值的 top, bottom, left, right = 0, columns-1, 0, rows - 1 result_list = list() while right >= left and bottom >= top: for i in range(top, right+1): result_list.append(matrix[top][i]) # 按顺时针把顶层元素添加到list中 for j in range(top+1, bottom+1): result_list.append(matrix[j][right]) # 按顺时针把最右边的元素添加到list中 if right > left and bottom > left: for i in range(right-1, left-1, -1): result_list.append(matrix[bottom][i]) # 按顺时针把底层元素添加到list中 for j in range(bottom-1, top, -1): result_list.append(matrix[j][left]) # 按顺时针把最左侧的元素添加到list中 # 当外层遍历结束 分别对四边的做相应的调整 top, bottom, left, right = top + 1, bottom - 1, left + 1, right - 1 return result_list
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)