以下是一个按对角线方向遍历二维数组的示例代码:
def diagonal_traverse(matrix):
if not matrix:
return []
m, n = len(matrix), len(matrix[0])
result = []
row, col = 0, 0
direction = 1 # 1表示向上,-1表示向下
while len(result) < m * n:
result.append(matrix[row][col])
if direction == 1:
if col == n - 1:
row += 1
direction = -1
elif row == 0:
col += 1
direction = -1
else:
row -= 1
col += 1
else:
if row == m - 1:
col += 1
direction = 1
elif col == 0:
row += 1
direction = 1
else:
row += 1
col -= 1
return result
# 测试示例
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
print(diagonal_traverse(matrix))
输出结果为:
[1, 2, 4, 7, 5, 3, 6, 8, 10, 11, 9, 12]
这段代码遍历了一个二维数组的每个元素,并按对角线方向移动。在遍历过程中,使用direction
变量来控制移动方向,1表示向上,-1表示向下。根据当前位置和移动方向,不断更新row
和col
的值,直到遍历完所有元素。