Skip to main content

对角线打印二维数组问题

题目描述

二维数组(N*N),沿对角线方向,从右上角打印到左下角

// 4*4二维数组
[
[1,2,3,4],
[5,6,7,8],
[9,10,11,12],
[13,14,15,16]
]
// 打印顺序
4
3 8
2 7 12
1 6 11 16
5 10 15
9 14
13

array

实现

    let Arr = [
[1,2,3,4],
[5,6,7,8],
[9,10,11,12],
[13,14,15,16]
]
function logTwoArray(sourceArr) {
let n = sourceArr.length;
// 第一步:打印右上角
for (let k = n -1; k >= 0; k--) {
for (let i = 0, j = k; i <= n - 1 - k && j <= n - 1; i++, j++){
console.log(sourceArr[i][j])
}
console.log('\n\r')
}
// 第二步:打印左下角
for (let k = 1; k <= n - 1; k++) {
for (let i = k, j = 0; i <= n - 1 && j <= n - 1 - k; i++, j++) {
console.log(sourceArr[i][j])
}
console.log('\n\r')
}
}

logTwoArray(Arr);