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
全部评论

相关推荐

11-05 07:29
贵州大学 Java
点赞 评论 收藏
分享
头像
11-18 16:08
福州大学 Java
影流之主:干10年不被裁,我就能拿别人一年的钱了,日子有盼头了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务