function diagonalSnakeTraverse(matrix) {
if (!matrix || matrix.length === 0) return [];
let m = matrix.length, n = matrix[0].length;
let result = [];
for (let d = 0; d < m + n - 1; d++) {
let intermediate = [];
let row = d < n ? 0 : d - n + 1;
let col = d < n ? d : n - 1;
while (row < m && col >= 0) {
intermediate.push(matrix[row][col]);
row++;
col--;
}
if (d % 2 == 0) {
intermediate.reverse();
}
result.push(...intermediate);
}
return result;
}
// 测试
const matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[11, 12, 13]
];
console.log(diagonalSnakeTraverse(matrix));
// 输出: [1, 2, 4, 7, 5, 3, 6, 8, 11, 12, 9, 13]