顺时针打印矩阵

时间 2018-10-13
环境:牛客的编译环境
语言:JavaScript
☕️难点:实现顺时针..真的想了好久没想出来
题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.
思路:当我们拿到一个矩阵的时候,把第一行存到输出结果里,第一行遍历过之后,将矩阵逆时针旋转90°,然后再把第一行存到输出结果中,遍历之后再旋转...
代码:


function turn(arr){
    var newArr = [],
        row = arr.length;
    if(arr.length > 0)
        var col = arr[0].length;
    for(var i = col - 1; i >= 0; i--){
        var rowarr = [];
        for(var j = 0; j < row; j++){
            rowarr.push(arr[j][i]);
        }
        newArr.push(rowarr);
    }
    return newArr;
}
function printMatrix(matrix)
{
    // write code here
    var arr = [];
    while(matrix.length != 0){
        var col = matrix[0].length,
            tmp = [];
        for(var i = 0; i < col; i++){
            tmp.push(matrix[0].pop());
        }
        matrix.splice(0,1);
        arr = arr.concat(tmp.reverse());
        matrix = turn(matrix);
    }
    return arr;
}

你可能感兴趣的:(顺时针打印矩阵)