题解 | #蛇形矩阵#JavaScript解答
蛇形矩阵
http://www.nowcoder.com/questionTerminal/353e6ac8725341968273fead86448751
对于将蛇形矩阵主要是提前设好四个边界,四个边界不断的缩小,最后缩到矩阵的中心。
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void (async function () {
// Write your code here
while ((line = await readline())) {
let n = parseInt(line);
let num = 1;
let left = 0;
let top = 0;
let right = n - 1;
let bottom = n - 1;
let result = new Array(n).fill(0).map(() => new Array(n).fill(0));
let target = n * n;
while (target >= num) {
for (let i = left; i <= right; i++) {
result[top][i] = num++;
}
top++;
for (let i = top; i <= bottom; i++) {
result[i][right] = num++;
}
right--;
for (let i = right; i >= left; i--) {
result[bottom][i] = num++;
}
bottom--;
for (let i = bottom; i >= top; i--) {
result[i][left] = num++;
}
left++;
}
let res = [];
result.forEach(item => {
res = [...res,...item]
})
console.log(...res)
}
})();