zoukankan      html  css  js  c++  java
  • python3 顺时针打印矩阵元素

    code

    '''
    输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,
    例如,如果输入如下矩阵:
    [[ 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 matrix == None:
                return
            rows = len(matrix)
            columns = len(matrix[0])
            start = 0
            while rows > start * 2 and columns > start * 2:
                self.PrintMatrixInCircle(matrix, columns, rows, start)
                start += 1
            print('')
    
        def PrintMatrixInCircle(self, matrix, columns, rows, start):
            endX = columns - 1 - start
            endY = rows - 1 - start
    
            # 从左到右打印一行
            for i in range(start, endX+1):
                number = matrix[start][i]
                print("right",number, ' ', end='')
    
            # 从上到下打印一行
            if start < endY:
                for i in range(start+1, endY+1):
                    number = matrix[i][endX]
                    print("down",number, ' ', end='')
    
            # 从右到左打印一行
            if start < endX and start < endY:
                for i in range(endX-1, start-1, -1):
                    number = matrix[endY][i]
                    print("left",number, ' ', end='')
    
            # 从下到上打印一行
            if start < endX and start < endY-1:
                for i in range(endY-1, start, -1):
                    number = matrix[i][start]
                    print("up",number, ' ', end='')
    
    
    matrix = [[1,  2,  3,  4],
              [5,  6,  7,  8],
              [9, 10, 11, 12],
              [13, 14, 15, 16]]
    
    matrix2 = [[1],[2],[3],[4],[5]]
    
    matrix3 = [[1,2],
                [3,4],
                [5,6],
                [7,8],
                [9,10]]
    
    S = Solution()
    S.printMatrix(matrix)
    S.printMatrix(matrix2)
    S.printMatrix(matrix3)

    outputs

    macname@MacdeMBP ~ % python3 test.py
    right 1  right 2  right 3  right 4  down 8  down 12  down 16  left 15  left 14  left 13  up 9  up 5  right 6  right 7  down 11  left 10  
    right 1  down 2  down 3  down 4  down 5  
    right 1  right 2  down 4  down 6  down 8  down 10  left 9  up 7  up 5  up 3  
    macname@MacdeMBP ~ % 

  • 相关阅读:
    tomcat work 目录
    上传图片预览 支持IE8+,FF,Chrome ,保留原图片比例
    设计模式学习笔记-观察者模式
    jcarousellite 实现图片列表滚动
    linux一些常用命令
    http&https&证书&数字签名
    醉笑陪君三万场 不诉离伤
    笔记本光驱位安装固态硬盘及window系统一些过程记录
    linux 添加定时任务脚本
    设置 SSH 免密码登陆——仍提示输入密码
  • 原文地址:https://www.cnblogs.com/sea-stream/p/13766938.html
Copyright © 2011-2022 走看看