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

    题目:

    输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵:

    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.

    思路:

    注意到是依照环打印矩阵的。所以可以定义环的左上角和右下角,确定环的位置,再依次打印。注意环在不停收缩。

    在这种思路下要注意两点:一个是环的上面一横和下面一横是否重复,一个是四条线的起点和重点是否重合。一不注意就容易写错。

    下面是代码:

    class Solution:
        # matrix类型为二维列表,需要返回列表
        def printMatrix(self, matrix):
            if not matrix:
                return
            row_num = len(matrix)
            col_num = len(matrix[0])
            mark, res = 0, []
            while 2 * mark < min(row_num, col_num):
                for cj in range(mark, col_num - mark):
                    res.append(matrix[mark][cj])
                for ri in range(mark + 1, row_num - mark):
                    res.append(matrix[ri][col_num - 1 - mark])
                if row_num - 1 - mark > mark:
                    for cj in range(col_num - 2 - mark, mark - 1, -1):
                        res.append(matrix[row_num - 1 - mark][cj])
                if col_num - 1 - mark > mark:
                    for ri in range(row_num -2 - mark, mark, -1):
                        res.append(matrix[ri][mark])
                mark += 1
            return res
  • 相关阅读:
    C# vb实现浮雕特效滤镜效果
    一张图看懂SharpImage
    C#控制操控操作多个UVC摄像头设备
    C#读写修改设置调整UVC摄像头画面-缩放
    继承多态绕点 Java篇
    继承多态绕点 C#篇
    lock关键字理解
    关于C#迭代器
    关于排列组合中组合结果
    C#与Java中相等关系
  • 原文地址:https://www.cnblogs.com/plank/p/9147689.html
Copyright © 2011-2022 走看看