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


    题目:输入一个矩阵,按照从外到里以顺时针的顺序依次打印出每一个数字,例如,若果输入如下的4*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 import java.util.ArrayList;
     2 public class Solution {
     3     ArrayList a = new ArrayList();//新建数组,便于存储结果
     4     public ArrayList<Integer> printMatrix(int [][] matrix) {        
     5         int tR = 0;
     6         int tC = 0;
     7         int dR = matrix.length - 1;//行数
     8         int dC = matrix[0].length - 1;//列数
     9         while(tR<=dR&&tC<=dC)
    10             print(matrix,tR++,tC++,dR--,dC--);
    11         return a;
    12     }
    13     public void print(int[][] m,int tR,int tC,int dR,int dC){
    14         if(dR==tR){//只有一横行,打印即可
    15             for(int i = tC;i<=dC;i++){
    16                 a.add(m[tR][i]);
    17             }
    18         }
    19         else if(dC == tC){
    20             for(int i = tR;i<=dR;i++ ){
    21                 a.add(m[i][tC]);
    22             }
    23         }
    24         else{
    25             int curC = tC;
    26             int curR = tR;
    27             while(curC!=dC){//当前未到达最右端
    28                 a.add(m[tR][curC++]);                
    29             }
    30             while(curR!=dR){//当前未到达最底端
    31                 a.add(m[curR++][dC]);                
    32             }
    33             while(curC!=tC){//当前未到达最左端
    34                 a.add(m[dR][curC--]);                
    35             }
    36             while(curR!=tR){//当前未到达最上端
    37                 a.add(m[curR--][tC]);                
    38             }
    39         }
    40     }
    41 }
  • 相关阅读:
    robotframework使用之 下拉框处理
    Python操作MySQL
    Python发送邮件
    Redis 常用命令
    安装htop教程及坑
    探索式测试-概述
    Git相关命令教程
    [精华][推荐]SSO CAS单点登录框架学习 环境搭建
    [精华][推荐]SSO CAS单点登录框架学习 搭建详细步骤及源码
    [精华][推荐]CAS实现单点登录实例源码
  • 原文地址:https://www.cnblogs.com/10081-AA/p/10725639.html
Copyright © 2020-2023  润新知