资讯专栏INFORMATION COLUMN

【刷算法】顺时针打印矩阵

Terry_Tai / 3183人阅读

摘要:题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵则依次打印出数字解题传入的参数为或者不是数组或者是空数组传入的是一维数组

题目描述

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵:

 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 printMatrix(m)
{
    // 传入的参数为null或者不是数组或者是空数组
    if(!m || !Array.isArray(m) || m.length === 0)
        return [];
    // 传入的是一维数组
    if(!m[0].length)
        m = [m]
    var left =  0,
        right = m[0].length-1,
        top = 0,
        down = m.length-1;
    var res = [];
    while(left  <= right && top <= down) {
        if(top === down) {
            for(var i = left;i <= right;i++)
                res.push(m[top][i]);
        }
        else if(left === right) {
            for(var i = top;i <= down;i++)
                res.push(m[i][left]);
        }
        else {
            var curCol = left, curRow = top;
            while(curCol !== right) {
                res.push(m[top][curCol++]);
            }
            while(curRow !== down) {
                res.push(m[curRow++][right])
            }
            while(curCol !== left) {
                res.push(m[down][curCol--]);
            }
            while(curRow !== top) {
                res.push(m[curRow--][left]);
            }
        }
        
        left++;
        right--;
        top++;
        down--;
    }
    return res;
}





文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/95646.html

相关文章

  • 【剑指offer】时针打印矩阵

    摘要:题目输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵则依次打印出数字题解这个题目就是正常的模拟就好。此外还要注意判断一下矩阵是的情况。 题目 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8...

    Hujiawei 评论0 收藏0
  • 算法】LeetCode.48-旋转图像

    摘要:题目描述给定一个的二维矩阵表示一个图像。将图像顺时针旋转度。说明你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。 题目描述 给定一个 n × n 的二维矩阵表示一个图像。 将图像顺时针旋转 90 度。 说明: 你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。 示例 1: 给定 matrix = [...

    mdluo 评论0 收藏0
  • js实现螺旋矩阵算法

    摘要:用填充一个的矩阵,该矩阵按顺时针旋转方向依次增大,用编程输出这个数组。要求如下我的思路先生成一个一维的数组这里实现的算法是通过略微修改了然后通过算法实现变化对应赋值方式有点蠢,通过实现还有有所收获的完整 Q:用0-9填充一个N*N的矩阵,该矩阵按顺时针旋转方向依次增大,用js编程输出这个数组。要求如下:showImg(https://segmentfault.com/img/bVO7z...

    oogh 评论0 收藏0
  • js实现螺旋矩阵算法

    摘要:用填充一个的矩阵,该矩阵按顺时针旋转方向依次增大,用编程输出这个数组。个人觉得这个思路不是最优解,各位路过的高手如果有更好思路,望不吝赐教。请输入代码此处可给赋值即可,比如生成矩阵,就等于 Q:用0-9填充一个N*N的矩阵,该矩阵按顺时针旋转方向依次增大,用js编程输出这个数组。要求如下:showImg(https://segmentfault.com/img/bVJ5Uf?w=210...

    bbbbbb 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<