每天(?)一道LeetCode(9) Spiral Matrix

Array

054. Spiral Matrix

Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.
即 给定一个的矩阵,顺时针输出矩阵中的元素
举个栗子
Input:

Output:

Solutions

先考虑第一行,第一行直接加入list,
再考虑最右边一列,把矩阵每行最后一个元素加入list
然后考虑最后一行,最后一行逆序加入list
最后考虑最左边一列,把矩阵每行第一个元素取出来然后逆序加入list

把加入list的元素删除,那么第一轮结束后,我们就把矩阵最外层的元素按顺序都加入了list,剩下了一个新的大小为的矩阵,继续上述操作,直到只剩下一行直接加入list

class Solution:
    def spiralOrder(self, matrix):
        """
        :type matrix: List[List[int]]
        :rtype: List[int]
        """
        res=[]
        try:
            while len(matrix)>1:
                ##top
                res+=matrix[0]
                matrix.pop(0)
                ##right side
                res+=[x[-1] for x in matrix]
                for x in matrix:
                    x.pop(-1)
                ##bottom
                res+= matrix[-1][::-1]
                matrix.pop(-1)
                ##left side
                res+=[x[0] for x in matrix][::-1]
                for x in matrix:
                    x.pop(0)
                    
            ##now only one row 
            res+=matrix[0]
            return res
        except IndexError:
            return res

你可能感兴趣的:(每天(?)一道LeetCode(9) Spiral Matrix)