给定一个含有 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