每日一题力扣498

给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示。

正解:

这道题太焦心了!

class Solution:
    def findDiagonalOrder(self, matrix: List[List[int]]) -> List[int]:
        if not matrix: return []
        row = len(matrix)
        col = len(matrix[0])
        res = []
        i = j = 0
        for _ in range(row*col):#有多少个数就查询多少次
            res.append(matrix[i][j])#把第一个数加进来
            if i == 0 and j%2 == 0 and j < col-1:#第一行中找偶数列,找开始
                j += 1#就往右走,准备从右上往左下走
            elif (i+j)%2 == 0 and j == col-1:#奇数列,找终止
                i += 1#就往下走
            elif j == 0 and i%2 == 1 and i < row-1:#第一列中找奇数列,找开始
                i += 1
            elif (i+j)%2 == 1 and i == row-1:##偶数列,找终止
                j += 1#那就往右走,准备从左下往右上走
            elif (i+j)%2 == 1:
                i += 1
                j -= 1
            elif (i+j)%2 == 0:
                i -= 1
                j += 1
        return res
原文地址:https://www.cnblogs.com/liuxiangyan/p/14471136.html