zoukankan      html  css  js  c++  java
  • 顺时针打印矩阵--剑指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;
    }
  • 相关阅读:
    第八周总结和实验六
    第七周总结与实验五
    遍历目录中的所有文件和目录,并生成全路径
    python watchdog
    Offer_answer_with_SDP_rfc3264
    [转]UML八大误解
    leetcode周赛220
    Codeforces Round #690 (Div. 3)
    学习资料
    鱼眼图与六面图转换(python)
  • 原文地址:https://www.cnblogs.com/aeipyuan/p/12638602.html
Copyright © 2011-2022 走看看