python写算法题:leetcode: 54. Spiral Matrix

115 篇文章 0 订阅
class Solution(object):
    def drawCircle(self, matrix, lefttop, size):
        print lefttop, size
        ret=[]
        for i in xrange(size[0]):
            ret.append(matrix[lefttop[1]][lefttop[0]+i])

        for i in xrange(1, size[1]-1):
            ret.append(matrix[lefttop[1]+i][lefttop[0]+size[0]-1])

        if size[1]>1:
            for i in xrange(size[0]):
                ret.append(matrix[lefttop[1]+size[1]-1][size[0]+lefttop[0]-i-1])

        if size[0]>1:
            for i in xrange(1, size[1]-1):
                ret.append(matrix[size[1]+lefttop[1]-i-1][lefttop[0]])

        return ret
    def spiralOrder(self, matrix):
        """
        :type matrix: List[List[int]]
        :rtype: List[int]
        """
        if len(matrix)==0:
            return []
        size=len(matrix[0]), len(matrix)
        lefttop=0,0
        loop = min(size[0],size[1])
        ret=[]
        for i in xrange(0, loop, 2):
            ret.extend(self.drawCircle(matrix, lefttop, size))
            lefttop=lefttop[0]+1, lefttop[1]+1
            size=size[0]-2,size[1]-2
        return ret        

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值