python四指针法

# -*- coding:utf-8 -*-
'''
思路很简单,直接模拟这个过程采用四个指针来控制遍历 
                   top=0 ──  ──  →  ┐   right=len(matirx[0])          
                        ┌   ── → ┐  |
                        ↑        ↓  | 
                        |           ↓  
              left=0    └  ←  ──    ┘
                               bottom=len(matrix)
''' 
class Solution:
    # matrix类型为二维列表,需要返回列表
    def printMatrix(self, matrix):
        # write code here

        if not matrix:#为空时返回[]
            return []
        res=[]
        self.top=0
        self.right=len(matrix[0])-1
        self.bottom=len(matrix)-1
        self.left=0
        while self.left<=self.right and self.top<=self.bottom:
            for i in range(self.left, self.right+1):#最上面一行
                res.append(matrix[self.top][i])
            for i in range(self.top+1, self.bottom+1):#最后边一列
                res.append(matrix[i][self.right])
            if self.top!=self.bottom:
                for i in range(self.right-1,self.left-1,-1):#最底下一行
                    res.append(matrix[self.bottom][i])
            if self.left!=self.right:
                 for i in range(self.bottom-1,self.top,-1):#最左侧一列
                        res.append(matrix[i][self.left])
            #指针变化 收缩到matrix 里面一圈          
            self.top+=1
            self.right-=1
            self.bottom-=1
            self.left+=1
        return res
全部评论

相关推荐

Gaynes:查看图片
点赞 评论 收藏
分享
06-12 17:46
门头沟学院 Java
运营你豪哥:来说重点: ​1.项目前置,时间倒序。​​ 2.​项目描述强化结果与量化效果(STAR原则里的R)。​​ ​3.个人技能精炼,明确掌握程度,突出核心。​​ ​4.增加强有力开头的个人总结部分。​​ 5.​优化教育背景(成绩排名)、合并奖项与活动。​​
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务