JavaScript - 顺时针打印数组

顺时针打印一个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));
  • 核心在于圈数变量,一圈一圈赋值很好理解。
  • 需要注意的是循环的边界以及退出循环的条件。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 9,191评论 0 2
  • 一、题目描述:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1...
    别拿爱情当饭吃阅读 3,345评论 0 0
  • 数组 记录《剑指offer》中所有关于数组的题目,以及LeetCode中的相似题目 相关题目列表 说明 由于简书...
    wenmingxing阅读 5,411评论 1 12
  • 也许我们的生活每天都似很忙,没有太多的时间来体验身边的小感动,也就是让我们开心,快乐的事。总是在一个又一个...
    画星雨阅读 3,068评论 0 0
  • 成功毁画
    墨_连城阅读 2,767评论 0 0

友情链接更多精彩内容