顺时针打印数组

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下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.

思想: 打印第一行。逆时针旋转数组后,再打印第一行。再逆时针旋转。 一直到最后。 代码如下:

function roate(arr) {    //逆时针旋转m*n的数组
        let a = []
        let m = arr.length;
        if (m==0) return null
        let n = arr[0].length
        for (let i = 0; i < n; i++) {
            a[i]=new Array(m).fill(0)
        }

        for (let i = 0; i < n; i++) {
            for (let j = 0;j<m;j++){
                a[i][j] = arr[j][Math.abs(i-n+1)]
            }
        }
        return a
    }
function printMatrix(matrix)
    {
        // write code here

        if(matrix.length==0)  return 
        let res = []      //存放数字
        while(matrix){
            for(let i=0;i<matrix[0].length;i++ ){
                res.push(matrix[0][i])
            }
            matrix=f(matrix.slice(1))
        }
    return res
    }

验证:
arr = [
[4,5,6,7],
[4,5,6,7],
[4,5,6,7],
[4,5,6,7]
]
输出的是:


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容