剑指 Offer 29. 顺时针打印矩阵

题目链接:

https://leetcode-cn.com/problems/shun-shi-zhen-da-yin-ju-zhen-lcof/

题意:

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。

题解:

模拟题目,注意控制条件即可。到边界时转向,遇到已经输出的元素也转向。

代码:
class Solution:
    def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
        ret = []
        if len(matrix)==0 or len(matrix[0])==0:
            return ret
        x,y,u,d,l,r,cnt,op=0,0,0,len(matrix)-1,0,len(matrix[0])-1,0,0
        while cnt<len(matrix)*len(matrix[0]):
            ret.append(matrix[x][y])
            cnt+=1
            if op == 0:#right
                if y== r:
                    u+=1
                    op = 1
                    x+=1
                else :
                    y+=1
            elif op == 1:#down
                if x==d:
                    r-=1
                    op = 2
                    y-=1
                else :
                    x+=1
            elif op == 2:#left
                if y==l:
                    d -=1
                    op =3
                    x-=1
                else:
                    y-=1
            else :#up
                if x == u:
                    l+=1
                    op =0
                    y+=1
                else:
                    x-=1
        return ret
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值