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.
    matrix = [[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]]
    ''' zip() 函数用于将可迭代的对象作为参数,
    将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
    如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,
    利用* 号操作符,可以将元组解压为列表。
    '''
    
    def printMatrix(matrix):
        if matrix:
            top_row = list(matrix[0])
            array = list(zip(*matrix[1:]))
            #<class 'list'>: [(4, 7), (5, 8), (6, 9)]
            array.reverse()
            #将剩下的值逆时针旋转,然后递归
            #<class 'list'>: [(6, 9), (5, 8), (4, 7)]
            return top_row + printMatrix(array)
        else:
            return []  # 保证递归的结束
    print(printMatrix(matrix))
  • 相关阅读:
    递归 迷宫问题
    中缀表达式转后缀表达式
    栈实现后缀表达式计算

    单向环形链表
    站在巨人的肩上
    C#自宿主API,不依赖IIS
    MySQL 安装失败解决办法
    第一话
    村上春树《眠》读书笔记
  • 原文地址:https://www.cnblogs.com/ansang/p/12042041.html
Copyright © 2011-2022 走看看