python写算法题:leetcode: 59. Spiral Matrix II


class Solution(object):
    def val(self, n, x, y):
        px=n-1-abs(2*x-n+1)
        py=n-1-abs(2*y-n+1)
        v=min(px,py)
        if v>=n-1:
            return n*n
        v/=2
        passv=(n-v)*v*4
        if px>=py:
            if y<=(n-1)/2:
                return passv+x-y+1
            else:
                return passv+2*(n-2*v-1)-x+y+1
        else:
            if x>=n/2:
                return passv-x+y+2*(n-2*v-1)+1
            else:
                return passv+x-y+(n-2*v-1)*4+1
    def dump(self, mat):
        for vs in mat:
            print ["%3d"%v for v in vs]
    def generateMatrix(self, n):
        """
        :type n: int
        :rtype: List[List[int]]
        """
        ret=[]
        for i in xrange(n):
            item=[]
            for j in xrange(n):
                #print i,j,self.val(n,j,i)
                item.append(self.val(n,j,i))
            ret.append(item)
        return ret

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值