• 顺时针打印矩阵--剑指offer


    顺时针打印矩阵

    • 热度指数:733969 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
    • 算法知识视频讲解

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

    例如,如果输入如下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

    步骤:

    1.设定方向dir与判定数组vis

    2.当前方向时判断边界和下一位置是否合法,不合法则改变方向

    3.新数组元素个数到达元素组个数则退出循环

    // let arr=[
    //     [1 ,2 ,3 ,4 ],
    //     [5 ,6 ,7 ,8 ],
    //     [9 ,10,11,12],
    //     [13,14,15,16],
    //     [17,18,19,20]
    // ];
    
    
    function printMatrix(matrix)
    {
        let vis=[];
        matrix.forEach(()=>vis.push([]));
        let dir=1;
        let i=0,j=0;
        let x=matrix.length,y=matrix[0].length;
        let res=[];
        while(res.length<x*y){
            //右
            if(dir==1){
                res.push(matrix[i][j]);
                vis[i][j]=1;
                if(j==y-1||vis[i][j+1]){
                    i++;
                    dir=2;
                }else{
                    j++;
                }
            }
            //下
            else if(dir==2){
                res.push(matrix[i][j]);
                vis[i][j]=1;
                if(i==x-1||vis[i+1][j]){
                    j--;
                    dir=3;
                }else{
                    i++;
                }
            }
            //左
            else if(dir==3){
                res.push(matrix[i][j]);
                vis[i][j]=1;
                if(j==0||vis[i][j-1]){
                    i--;
                    dir=4;
                }else{
                    j--;
                }
            }
            //上
            else if(dir==4){
                res.push(matrix[i][j]);
                vis[i][j]=1;
                if(i==0||vis[i-1][j]){
                    j++;
                    dir=1;
                }else{
                    i--;
                }
            }
        }
        return res;
    }
  • 相关阅读:
    Spring5.0源码导入IDEA(一)
    适配器模式
    3.6常见查询示例
    3.5在批处理模式下使用mysql
    3.4获取有关数据库和表的信息
    3.3.4.9使用多个表
    3.3.4.8计数行
    3.3.4.7模式匹配
    3.3.4.6使用NULL值
    3.3.4.5日期计算
  • 原文地址:https://www.cnblogs.com/aeipyuan/p/12638602.html
Copyright © 2020-2023  润新知