Leecode 54

在这里插入图片描述
在这里插入图片描述
题目解析:
确定四个边界(上、下、左、右),确定螺旋轨迹是先右后下再左然后往上,所以按照轨迹,只要没有达到边界就一直走,达到边界之后就换个方向,

class Solution(object):
    def spiralOrder(self, matrix):
        """
        :type matrix: List[List[int]]
        :rtype: List[int]
        """
        i = 0
        j = 0
        L = []
        m = len(matrix)
        n = len(matrix[0])
        L.append(matrix[i][j]) # 起始点
        l = 0  #左边界
		r = n-1  #右边界
		t = 1   #上边界,因为刚开始往右走,已经占了一行,所有上边界从1开始
		b = m-1  #下边界
        while l < j or j < r or i > t or i < b:
            while j < r:  # 往右
                j += 1
                L.append(matrix[i][j])
            r -= 1
            if len(L) == m*n:  # 达到边界条件
                break
            while i < b:  # 往下
                i += 1
                L.append(matrix[i][j])
            b -= 1
            if len(L) == m*n:  # 达到边界条件
                break
            while j > l:  # 往左
                j -= 1
                L.append(matrix[i][j])
            l += 1
            if len(L) == m*n:  # 达到边界条件
                break
            while i > t:  # 往上
                i -= 1
                L.append(matrix[i][j])
            t += 1
            if len(L) == m*n:  # 达到边界条件
                break
        return L
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值