1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
一个4*4的矩阵
如何顺时针由外往里输出
1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10
// 不会要套4个for把?
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
一个4*4的矩阵
如何顺时针由外往里输出
1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10
// 不会要套4个for把?
function printMatrix(matrix) {
if (matrix == null || matrix.length == 0) {
return;
}
var rows = matrix.length;
var cols = matrix[0].length;
var start = 0;
var result = [];
while (cols > start * 2 && rows > start * 2) {
var endX = cols - 1 - start;
var endY = rows - 1 - start;
//从左到右打印一行
for (var i = start; i <= endX; i++) {
result.push(matrix[start][i]);
}
//从上到下打印一列
if (start < endY) {
for (var i = start + 1; i <= endY; i++) {
result.push(matrix[i][endX]);
}
}
//从右到左打印一行
if (start < endX && start < endY) {
for (var i = endX - 1; i >= start; i--) {
result.push(matrix[endY][i]);
}
}
//从下到上打印一列
if (start < endX && start < endY - 1) {
for (var i = endY - 1; i >= start + 1; i--) {
result.push(matrix[i][start]);
}
}
start++;
}
return result
}
var test = function (matrix) {
var x, y, border = [x = y = 0, matrix.length - 1], result = [];
while (x <= border[1] || y <= border[1]) {
result.push(matrix[y][x]);
if (y == border[0] && x < border[1]) x++;
else if (x == border[1] && y < border[1]) y++;
else if (y == border[1] && x > border[0]) x--;
else if (x == border[0] && y > border[0]) y--;
if (x == border[0] && y == border[0]) {
y = x = ++border[0];
border[1]--;
}
}
return result;
}
原答案
var nums = "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16";
var arr = nums.split(',');
for(var i in arr){
i-=0;
if(i>0&&(i+1)%4==0){
var str = arr.slice(i-3,i+1).join(' ');
console.log(str)
}
}
我理解错误了
var arr = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15, 16]
]
arr.forEach(row => {
row.forEach(n => console.log(n))
})
13 回答12.7k 阅读
7 回答1.9k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
6 回答809 阅读✓ 已解决
6 回答1k 阅读
2 回答1.3k 阅读✓ 已解决