zoukankan      html  css  js  c++  java
  • 剑指offer顺时针打印矩阵python

    题目描述

    输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下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
  • 相关阅读:

    双向链表
    obs分析 笔记
    循环链表
    静态链表
    链式顺序表
    线性表
    ffmpeg-4.1.1-win64-dev在vs2017的搭建
    G1 与 CMS 两个垃圾收集器的对比
    垃圾回收算法有几种类型? 他们对应的优缺点又是什么?
  • 原文地址:https://www.cnblogs.com/wangzhihang/p/11790988.html
Copyright © 2011-2022 走看看