常见的 2D 数组模式
本课属于 Coddy JavaScript 学习旅程的“逻辑与流程”单元。第 13 课,共 65 课。
处理 2D 数组时,经常会遇到某些模式。识别这些模式可以帮助你更高效地解决问题。下面是几种常见模式:
对角线遍历
访问行索引等于列索引的元素(matrix[i][i]),即可得到主对角线。对于副对角线,行索引与列索引之和等于数组大小减 1(matrix[i][size - 1 - i])。
例如:
1 2 3
4 5 6
7 8 9遍历主对角线(matrix[i][i]):1、5、9
遍历副对角线(matrix[i][size - 1 - i]):3、5、7
边界遍历
要遍历边界元素,在遍历另一个索引时,保持一个索引不变(0 或 size - 1)。
要访问顶部边框,请遍历各列,并将行索引固定为 0。
例如:
1 2 3 4
5 6 7 8
9 10 11 12边界元素:1、2、3、4、8、12、11、10、9、5(除了 6 和 7)
挑战
简单创建一个名为 printPatterns 的函数,它接收一个由整数构成的方形二维数组(matrix)作为输入,并打印以下图案:
- 主对角线:打印行索引等于列索引的所有元素。
- 副对角线:打印行索引与列索引之和等于矩阵大小减 1 的所有元素。
- 边框:打印矩阵顶部、底部、左侧和右侧边框上的元素。
输出应如下所示:
Main Diagonal: 1 6 11 16
Anti-Diagonal: 4 7 10 13
Top Border: 1 2 3 4
Bottom Border: 13 14 15 16
Left Border: 1 5 9 13
Right Border: 4 8 12 16亲手试试
function printPatterns(matrix) {
let mainDiagonal = []
// TODO:实现
console.log("Main Diagonal:", mainDiagonal.join(" "));
let antiDiagonal = [];
// TODO:实现
console.log("Anti-Diagonal:", antiDiagonal.join(" "));
let topBorder = [];
// TODO:实现
console.log("Top Border:", topBorder.join(" "));
let bottomBorder = [];
// TODO:实现
console.log("Bottom Border:", bottomBorder.join(" "));
let leftBorder = [];
// TODO:实现
console.log("Left Border:", leftBorder.join(" "));
let rightBorder = [];
// TODO:实现
console.log("Right Border:", rightBorder.join(" "));
}
// 不要在函数外编写任何内容这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: JavaScript 在线编译器