Javascript 复杂螺旋矩阵
我正在为我的谷歌面试进行培训,我试图理解在我观看的视频中出现的这个解决方案。如果有人能解释一下这里发生了什么,我将不胜感激 问题是: 编写一个接受整数N并返回NxN螺旋矩阵的函数 示例:Javascript 复杂螺旋矩阵,javascript,algorithm,Javascript,Algorithm,我正在为我的谷歌面试进行培训,我试图理解在我观看的视频中出现的这个解决方案。如果有人能解释一下这里发生了什么,我将不胜感激 问题是: 编写一个接受整数N并返回NxN螺旋矩阵的函数 示例: matrix(2) [ [1, 2], [4, 3] ] matrix(3) [ [1, 2, 3], [8, 9, 4], [7, 6, 5] ] matrix(4) [ [1, 2, 3, 4], [12, 13, 14, 5], [11, 16, 15, 6], [
matrix(2)
[
[1, 2],
[4, 3]
]
matrix(3)
[
[1, 2, 3],
[8, 9, 4],
[7, 6, 5]
]
matrix(4)
[
[1, 2, 3, 4],
[12, 13, 14, 5],
[11, 16, 15, 6],
[10, 9, 8, 7]
]
代码:
实施情况如下: 结果是一个包含n个数组的数组,它将在while循环中填充 计数器统计访问的矩阵单元数 startColumn、endColumn、startRow、endRow定义访问矩阵单元格时逐渐缩小的矩形的边界。例如,当完全访问第一行时,startRow将递增,因此第一行不再成为矩形的一部分 而条件意味着矩形边界不必满足。在相反的情况下,矩形将有0个曲面,因此矩阵将只访问单元,因此它将被终止 第一个for循环意味着擦拭矩形的上边框;每次访问新单元格时,将计数器指定为单元格的值并递增 第二个、第三个和第四个循环表示相同的内容,但用于右、下和左边框
你到底不明白什么?视频是什么?欢迎来到StackOverflow。请按照创建此帐户时的建议,遵循帮助文档中的过帐指导原则,和在这里申请。StackOverflow不是设计、编码、研究或教程资源。如果你有一个具体的困惑点,那么解释一下。一个我不理解的全局变量对于堆栈溢出来说太宽了。
function matrix(n) {
const results = [];
for (let i = 0; i < n; i++) {
results.push([]);
}
let counter = 1;
let startColumn = 0;
let endColumn = n - 1;
let startRow = 0;
let endRow = n - 1;
while (startColumn <= endColumn && startRow <= endRow) {
// Top row
for (let i = startColumn; i <= endColumn; i++) {
results[startRow][i] = counter;
counter++;
}
startRow++;
// Right column
for (let i = startRow; i <= endRow; i++) {
results[i][endColumn] = counter;
counter++;
}
endColumn--;
// Bottom row
for (let i = endColumn; i >= startColumn; i--) {
results[endRow][i] = counter;
counter++;
}
endRow--;
// start column
for (let i = endRow; i >= startRow; i--) {
results[i][startColumn] = counter;
counter++;
}
startColumn++;
}
return results;
}