0
点赞
收藏
分享

微信扫一扫

如何在“Ubuntu 服务器上使用MariaDB配置Galera集群”?

月半小夜曲_ 03-07 14:30 阅读 2

python系列文章目录

【python】基于cv2提取图片上的文本内容
【python】简单作图
【python】数组字符串等实用
【python】sort与sorted排序使用


【python】对角线遍历


说明

给你一个大小为 m x n 的矩阵 mat ,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。
输入:mat = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,4,7,5,3,6,8,9]
示例 1:
在这里插入图片描述


1.分析

对于 3 x 3 的矩阵,矩阵的坐标如下所示:
[ 00 01 02 10 11 12 20 21 22 ] \left[\begin{array}{c|c|c} 00 & 01 & 02\\ \hline 10 & 11 & 12\\ \hline 20 & 21 & 22\\ \end{array}\right] 001020011121021222
需要输出的顺序是斜对角线的形式
第一斜对角线,角标和为0,如果规定从左下到右上为正序,这一条为正序。[[0,0]]
[ 00 ] \left[\begin{array}{c|c|c} 00 & & \\ \hline & & \\ \hline & & \\ \end{array}\right] 00
第二斜对角线,角标和为1,逆序。[[0,1], [0,1]]
[ 01 10 ] \left[\begin{array}{c|c|c} & 01 & \\ \hline 10 & & \\ \hline & & \\ \end{array}\right] 1001
第三斜对角线,角标和为2,正序。[[2,0], [1,1], [0,2]]
[ 02 11 20 ] \left[\begin{array}{c|c|c} & & 02\\ \hline & 11 & \\ \hline 20 & & \\ \end{array}\right] 201102

第四斜对角线,角标和为3,逆序。[[1,2], [2,1]]
[ 12 21 ] \left[\begin{array}{c|c|c} & & \\ \hline & & 12\\ \hline & 21 & \\ \end{array}\right] 2112

第五斜对角线,角标和为4,正序。[[2,2]]
[ 22 ] \left[\begin{array}{c|c|c} & & \\ \hline & & \\ \hline & &22 \\ \end{array}\right] 22

2.注意事项

2.1 遍历

遍历的和为 2+2=4,即 m + n - 2

2.2 区间

横坐标的最大值不能超越2,即m-1,纵坐标的最大值不能超越2,即n-1

2.3 顺序

正序tmp与逆序tmp[::-1]要有标记,

3.代码实现

class Solution:
    def findDiagonalOrder(self, mat: List[List[int]]) -> List[int]:
        #横坐标
        m = len(mat)
        #纵坐标
        n = len(mat[0])
        result = []
        #顺序标记
        count = 0
        for i in range(m+n-1):
            tmp = []
            #避免横坐标溢出
            left = min(m-1, count)
            right = i - left
            #每一条斜对角线一个while
            while right < n and left > -1:
                tmp.append(mat[left][right])
                left = left - 1
                right = right + 1
            #如果是奇数斜对角线,则逆序
            if count % 2 == 1:
                tmp = tmp[::-1]
            #标记
            count = count + 1
            result.extend(tmp)
        return result
举报

相关推荐

0 条评论