8.螺旋矩阵

2020-03-19  本文已影响0人  你好宝宝

题目描述

给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。

思路

总共遍历的时候要通过四条路径

示例1:
输入:
[
 [ 1, 2, 3 ],
 [ 4, 5, 6 ],
 [ 7, 8, 9 ]
]
输出: [1,2,3,6,9,8,7,4,5]

示例2:
输入:
[
  [1, 2, 3, 4],
  [5, 6, 7, 8],
  [9,10,11,12]
]
输出: [1,2,3,4,8,12,11,10,9,5,6,7]

import math
class Solution:
    def spiralOrder(self, matrix):
        if not matrix:
            return []

        loop=math.ceil(min(len(matrix),len(matrix[0]))/2)#计算循环的次数
        m=len(matrix)
        n=len(matrix[0])
        result=[]
        for i in range(loop):
            for j in range(i,n-i):
                result.append(matrix[i][j])

            for k in range(i+1,m-i):
                result.append(matrix[k][n-i-1])
            
            for j in reversed(range(i,n-i-1)):
                if m-i-1 == i:
                    break
                result.append(matrix[m-i-1][j])
            
            for k in reversed(range(i+1,m-i-1)):
                if i==n-i-1:
                    break
                result.append(matrix[k][i])
            
            loop +=1
        
        return result

上一篇 下一篇

猜你喜欢

热点阅读