zoukankan      html  css  js  c++  java
  • 剑指offer——顺时针打印矩阵

    题目链接:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下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 import java.util.ArrayList;
     2 public class Solution {
     3     public ArrayList<Integer> printMatrix(int [][] matrix) {
     4         ArrayList arrlist = new ArrayList<>();
     5         
     6         int tR = 0;//左上角行
     7         int tC = 0;//左上角的列
     8         int dR = matrix.length - 1;//右下角的行
     9         int dC = matrix[0].length - 1;//右下角的列
    10         while (tR <= dR && tC <= dC) {
    11             printEdge(matrix, tR++, tC++, dR--, dC--,arrlist);
    12         }
    13         return arrlist;
    14     }
    15     
    16     public static void printEdge(int[][] m, int tR, int tC, int dR, int dC,ArrayList<Integer> arrlist) {
    17         if (tR == dR) {//先判断是否只是一横行 如果是 打印该横行的列(通常用于内圈)
    18             for (int i = tC; i <= dC; i++) {
    19                 arrlist.add(m[tR][i]);
    20             }
    21         } else if (tC == dC) {//再判断是否只是一竖列 如果是 打印该横行的列(通常用于内圈
    22             for (int i = tR; i <= dR; i++) {
    23                 arrlist.add(m[i][tC]);
    24             }
    25         } else {
    26             int curC = tC;//用2个变量储存 用于判断当前位置
    27             int curR = tR;
    28             while (curC != dC) {//当前位置未到达当前行的最右列 --》往右去
    29                 arrlist.add(m[tR][curC]);
    30                 curC++;
    31             }
    32             while (curR != dR) {//当前位置未到达当前列的最底行 --》往下去
    33                 arrlist.add(m[curR][dC]);
    34                 curR++;
    35             }
    36             while (curC != tC) {//当前位置未到达当前行的最左列 --》往左去
    37                 arrlist.add(m[dR][curC]);
    38                 curC--;
    39             }
    40             while (curR != tR) {
    41                 arrlist.add(m[curR][tC]);
    42                 curR--;
    43             }
    44         }
    45     }
    46     
    47 }
  • 相关阅读:
    【经验总结】- IDEA无法显示Project目录怎么办
    JSON API免费接口(转)
    电子商务(电销)平台中订单模块(Order)数据库设计明细(转)
    typora 快捷键
    table 随td固宽
    跨域请求
    在网址前加神秘字母,让你打开新世界(z)
    vux安装中遇到的坑(转)
    常用正则表达示
    mui 浏览器一样自动缩放
  • 原文地址:https://www.cnblogs.com/wangyufeiaichiyu/p/10860700.html
Copyright © 2011-2022 走看看