61 leetcode - Spiral Matrix

来源:互联网 发布:文明5 mac steam 汉化 编辑:程序博客网 时间:2024/04/29 07:46
#!/usr/bin/python# -*- coding: utf-8 -*-'''Spiral MatrixGiven a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.For example,Given the following matrix:[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]]You should return [1,2,3,6,9,8,7,4,5].'''class Solution(object):    def spiralOrder(self, matrix):        """        :type matrix: List[List[int]]        :rtype: List[int]        """        if not matrix:            return []        up,down = 0,len(matrix) - 1        left,right = 0,len(matrix[0]) - 1        ret = []        while down >= up and left <= right:            col = left            while col <= right:                if matrix[up][col] != None:    #给用过的数据做标记,防止重复使用                    ret.append(matrix[up][col])                    matrix[up][col] = None                col += 1            up += 1            row = up            while row <= down:                if matrix[row][right] != None:                    ret.append(matrix[row][right])                    matrix[row][right] = None                row += 1            right -= 1            col = right            while col >= left:                if matrix[down][col] != None:                    ret.append(matrix[down][col])                    matrix[down][col] = None                col -= 1            down -= 1            row = down            while row >= up:                if matrix[row][left] != None:                    ret.append(matrix[row][left])                    matrix[row][left] = None                row -= 1            left += 1        return retif __name__ == "__main__":    s = Solution()    print s.spiralOrder([[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]])    print s.spiralOrder([[ 1, 2, 3 ,4],[5, 6 ,7,8],[9,10,11,12 ],[13,14,15,16]])    print s.spiralOrder([[1,2,3,4]])    a = [[1],[2],[3],[4],[5],[6],[7],[8],[9],[10]]    b = [i*2 for i in a]    print s.spiralOrder(a)    print s.spiralOrder(b)
0 0