python顺时针螺旋顺序

python顺时针螺旋顺序,第1张

python顺时针螺旋顺序
给你一个 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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5437078.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存