码迷,mamicode.com
首页 > 编程语言 > 详细

剑指offer顺时针打印矩阵python

时间:2019-11-04 11:22:45      阅读:94      评论:0      收藏:0      [点我收藏+]

标签:and   offer   for   二维   sel   color   描述   app   esc   

题目描述

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.
 

思路

分别给行和列设置两个数字作为边界值,每一次循环之后,缩小边界。

代码

# -*- coding:utf-8 -*-
class Solution:
    # matrix类型为二维列表,需要返回列表
    def printMatrix(self, matrix):
        if not matrix:
            return 
        x0,y0 = 0,0
        xn = len(matrix) - 1
        yn = len(matrix[0]) - 1
        ans = []
        while x0 <=xn and y0 <=yn:
            for i in range(y0,yn+1):
                ans.append(matrix[x0][i])
            for i in range(x0+1,xn+1):
                ans.append(matrix[i][yn])
            if xn > x0: #不是单一行
                for i in range(yn-1,y0-1, -1):
                    ans.append(matrix[xn][i])
            if yn > y0:
                for i in range(xn-1,x0, -1):
                    ans.append(matrix[i][y0])
            x0 += 1
            y0 += 1
            xn -= 1
            yn -= 1
        return ans

 

剑指offer顺时针打印矩阵python

标签:and   offer   for   二维   sel   color   描述   app   esc   

原文地址:https://www.cnblogs.com/wangzhihang/p/11790988.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!