zoukankan      html  css  js  c++  java
  • 剑指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 }
  • 相关阅读:
    es6 语法 (数值扩展)
    手机日期插件 (转加上自己喜欢的)
    仿微信抢红包(js 转)
    默认时间为今天
    es6 语法 (解构赋值)
    es6 语法 (let 和const)
    es6环境搭建
    express 安装和运行
    git 常用操作,下拉,提交,更新,还原
    排序。
  • 原文地址:https://www.cnblogs.com/10081-AA/p/10725639.html
Copyright © 2011-2022 走看看