首页 > 试题广场 >

之字形打印矩阵

[编程题]之字形打印矩阵
  • 热度指数:26380 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

对于一个矩阵,请设计一个算法,将元素按“之”字形打印。具体见样例。

给定一个整数矩阵mat,以及他的维数nxm,请返回一个数组,其中元素依次为打印的数字。

测试样例:
[[1,2,3],[4,5,6],[7,8,9],[10,11,12]],4,3
返回:[1,2,3,6,5,4,7,8,9,12,11,10]
# -*- coding:utf-8 -*-

class Printer:
    def printMatrix(self, mat, n, m):
        # write code here
        list1=[]
        list2=[]
        for i in mat:
            list1.append(i)
        for i in range(n):
            if i%2==0:
                list1[i]=list1[i]
            else:
                list1[i]=list1[i][::-1]
        for i in range(n):
            for j in list1[i]:
                list2.append(j)
        return list2
发表于 2019-07-20 14:51:20 回复(0)
A=[
    [1,2,3],
    [4,5,6],
    [7,8,9],
    [10,11,12]
] for n in range(3):  if n !=0:
        A[2 * n - 1].reverse()
B=[] for i in range(4):  for j in range(3):
        B.append(A[i][j])  print(B)

发表于 2018-12-30 17:34:16 回复(0)
class Printer:
    def printMatrix(self, mat, n, m):
        result = []
        for i in range(n):
            if i & 1:
                result += mat[i][::-1]
            else:
                result += mat[i][:]
        return result
        # write code here
编辑于 2018-10-14 20:41:18 回复(0)
'''
利用Python内置的enumerate()函数,
可将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,
同时列出数据和数据下标,一般用在for循环当中。
'''

class Printer:
    def printMatrix(self, mat, n, m):
        res = []
        for i,elem in enumerate(mat):    #遍历索引(数据下标)和对应的数据
            if i % 2 == 0:
                res += elem        #如果数据在偶数行,直接按顺序添加数据
            else:
                res += elem[::-1]    #如果数据在奇数行,则倒序添加数据,-1是下标起始位置
        return res


发表于 2018-10-09 20:51:32 回复(0)
# -*- coding:utf-8 -*-
class Printer:
    def printMatrix(self, mat, n, m):
        ans=[]
        for i in range(n):
            if i%2==0:#偶数行顺序打印
                ans.extend(mat[i])#extend()在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表),不含[]符号
            else:#奇数行逆序打印
                ans.extend(mat[i][::-1])
        return ans

发表于 2018-07-24 10:52:57 回复(0)
class Printer:
    def printMatrix(self, mat, n, m):
        res = []
        a=[]
        for i in range(len(mat)):
            if i%2 == 0:
                res += mat.pop(0)
            else:
                a = mat[0][::-1]
                res += a
                mat.pop(0)
        return res

发表于 2018-05-22 11:34:55 回复(0)

python solution:

class Printer:
    def printMatrix(self, mat, n, m):
        res=[]
        for i,v in enumerate(mat):
            if i%2 == 0:
                res+=v
            else:res+=v[::-1]
        return res
发表于 2017-09-12 11:50:54 回复(0)
# -*- coding:utf-8 -*-
class Printer:
    def printMatrix(self, mat, n, m):
        # write code here
        result = [['' for x in range(m)] for y in range(n)]
        for i in range(0, n):
            for j in range(0, m):
                if (i + 1) % 2 == 0:
                    result[i][m - j - 1] = mat[i][j]
                    print(result[i][m - j - 1])
                else:
                    result[i][j] = mat[i][j]
        A = []
        for i in range(0, n):
            for j in range(0, m):
                A.append(result[i][j])
        return A
发表于 2017-08-27 14:38:08 回复(0)