比如,参数是2,输出矩阵
1 2
4 3
参数是3,输出:
1 2 3
8 9 4
7 6 5
请尝试用js编写一个这样的方法!!!求解。
function getMatrix(n) {
var matrix = Array.from({length: n }, function() {return []});
var num = 1,
rowbegin = 0,
rowend = n - 1,
colbegin = 0,
colend = n - 1;
while (rowbegin <= rowend && colbegin <= colend) {
for (var i = colbegin; i <= colend; i++) matrix[rowbegin][i] = num++;
rowbegin++;
for (var i = rowbegin; i <= rowend; i++) matrix[i][colend] = num++;
colend--;
for (var i = colend; i >= colbegin; i--) matrix[rowend][i] = num++;
rowend--;
for (var i = rowend; i >= rowbegin; i--) matrix[i][colbegin] = num++;
colbegin++;
}
return matrix
}
console.log(getMatrix(3))
function matrix(n) {
var start = 0;
var result = [];
var length = n;
var tmp = 0;
for (var i = 0; i < length; i++) {
result.push([]);
};
while (length > start * 2) {
var end = length - 1 - start;
//第一行
for (var i = start; i <= end; i++) {
result[start][i] = ++tmp;
}
if (start < end) {
//由上到下
for (var i = start + 1; i <= end; i++) {
result[i][end] = ++tmp;
}
//最后一行
for (var i = end - 1; i >= start; i--) {
result[end][i] = ++tmp;
}
}
//由下到上
if (start < end - 1) {
for (var i = end - 1; i >= start + 1; i--) {
result[i][start] = ++tmp;
}
}
start++;
}
return result
}
13 回答13k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
6 回答1.1k 阅读