zoukankan      html  css  js  c++  java
  • Spiral Matrix螺旋遍历矩阵

    假定有:

    [
     [ 1, 2, 3 ],
     [ 4, 5, 6 ],
     [ 7, 8, 9 ]
    ]

    这样一个数组矩阵,现要求对其进行顺时针方向螺旋形从外至内地遍历,即输出: [1,2,3,6,9,8,7,4,5]

    分析:

    将每一次360度遍历视为一个周期,每一个周期分为上右下左四个阶段,逐个进行遍历:

    以下是本人的草稿,请忽略苍劲如龙卷风摧朽拉枯般的字体。。。

    理清思绪后就剩下笔了:

    var spiralOrder = function(matrix) {
        var x1= 0, y1= 0, x2= matrix[0].length- 1, y2= matrix.length- 1;
        var result= []
        while(x1<=x2 && y1<=y2){                                    
            for(var y= y1; y<= y2; y ++){
                result.push(matrix[x1][y])
            }
            for(var x= x1+ 1; x<= x2; x ++){
                result.push(matrix[x][y2])
            }
            for(var y= y2-1; y>= y1; y --){
                result.push(matrix[x2][y])
            }
            for(var x= x2-1; x>= x1+1; x --){
                result.push(matrix[x][y1])
            }
            ++x1
            ++y1
            --x2
            --y2
        }
        console.log(result)
        return result
    };
    spiralOrder([
     [ 1, 2, 3 ],
     [ 4, 5, 6 ],
     [ 7, 8, 9 ]
    ])
  • 相关阅读:
    《Java多线程编程核心技术》——多线程与同步
    《垃圾回收的算法与实现》——Python垃圾回收
    命令提示符
    clip
    explorer
    dotnet 命令启动报错
    Superfetch/SysMain
    Windows
    Windows 系统授权服务信息
    Windows 命令
  • 原文地址:https://www.cnblogs.com/yanze/p/7606510.html
Copyright © 2011-2022 走看看