美文网首页
JavaScript - 顺时针打印数组

JavaScript - 顺时针打印数组

作者: ElricTang | 来源:发表于2019-10-24 18:27 被阅读0次

    顺时针打印一个M*N的矩阵,起始为1。
    例子:
    m = 6 ,n = 5
    [ [ 1, 2, 3, 4, 5 ],
    [ 18, 19, 20, 21, 6 ],
    [ 17, 28, 29, 22, 7 ],
    [ 16, 27, 30, 23, 8 ],
    [ 15, 26, 25, 24, 9 ],
    [ 14, 13, 12, 11, 10 ] ]

    function spiralArray(row,col){
    
        // m:圈数 count:叠加值 arr:结果数组
        let m = 0;
        let count = 1;
        let arr = [];
    
        // 初始化数组
        for(let i = 0;i < row;i++){
            arr[i] = [];
            for(let j = 0;j < col;j++){
                arr[i][j] = 0;
            }
        }
    
    
        while(true){
    
            // 向右赋值
            for(let a = m;a < col-m;a++){
                arr[m][a] = count++;
            }
    
            // 向下赋值
            for(let b = m;b < row-m-1;b++){
                arr[b+1][col-m-1] = count++;
            }
    
            // 向左赋值
            for(let c = m;c < col-m-1;c++){
                arr[row-m-1][col-1-(c+1)] = count++;
            }
    
            // 向上赋值
            for(let d = m;d < row-m-2;d++){
                arr[row-(d+1)-1][m] = count++;
            }
    
            // 每一圈赋值完后,圈数+1
            m++;
    
            // 如果自增值大于矩阵值数量,结束循环
            if(count > row*col){
                break
            }
    
        }
    
        return arr;
    }
    
    console.log(spiralArray(6,5));
    
    • 核心在于圈数变量,一圈一圈赋值很好理解。
    • 需要注意的是循环的边界以及退出循环的条件。

    相关文章

      网友评论

          本文标题:JavaScript - 顺时针打印数组

          本文链接:https://www.haomeiwen.com/subject/pvmdvctx.html