为了账号安全,请及时绑定邮箱和手机立即绑定

一个4*4矩阵如何输出

一个4*4矩阵如何输出

至尊宝的传说 2019-03-21 22:19:05
1 2  3  45 6  7  89 10 11 1213 14 15 16一个4*4的矩阵如何顺时针由外往里输出1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10// 不会要套4个for把?
查看完整描述

5 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

function circle(array) {

  return array.length < 2 ? array[0] : array.shift().concat(

    array.map(e=>e.pop()), 

    circle(array.map(e=>e.reverse()).reverse())

  );

}

// test

circle([[1,2,3,4],[5,6,7,8],[9,10,11,12]]);


查看完整回答
反对 回复 2019-03-26
?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

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

}


查看完整回答
反对 回复 2019-03-26
?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

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;

}


查看完整回答
反对 回复 2019-03-26
?
HUX布斯

TA贡献1876条经验 获得超6个赞

原答案


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)

     }

 

}

我理解错误了


查看完整回答
反对 回复 2019-03-26
?
米脂

TA贡献1836条经验 获得超3个赞

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))

})


查看完整回答
反对 回复 2019-03-26
  • 5 回答
  • 0 关注
  • 965 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号