给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下所示。
输入:
[
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]
输出: [1,2,4,7,5,3,6,8,9]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/diagonal-traverse/
class Solution(object):
def findDiagonalOrder(self, matrix):
"""
:type matrix: List[List[int]]
:rtype: List[int]
"""
if len(matrix) == 0:
return []
return_list = []
row = 0
col = 0
col_len = len(matrix[0])
row_len = len(matrix)
# 一共需要得到row_len+col_len-1个子数组
for i in range(row_len+col_len-1):
new_list = []
# while 条件即为一个一次遍历结束的标志
while col >= 0 and row < row_len:
new_list.append(matrix[row][col])
col -= 1
row += 1
# 每个子数组的起始元素是先从第一行的元素依次获取,然后再依次取最后一列的元素
if i < col_len-1:
col = i + 1
row = 0
else:
row = i - col_len + 2
col = col_len - 1
# 若i是偶数,则改new_list需要倒置
if i % 2 == 0:
return_list += new_list[::-1]
else:
return_list += new_list
return return_list
本文地址:https://blog.csdn.net/qq_40829873/article/details/107187968