zoukankan      html  css  js  c++  java
  • 顺时针打印矩阵

    问题:

      输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下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)使用数组的元素总数控制最外层循环,没打印一个总数减1。当总数为0时退出最外层循环

      (2)每一次顺时针打印,分为上、右,下、左。设置count表示顺时针的次数,同时控制打印的边界;设置i , j 表示打印位置,内循环没打印一次需要调整i , j的值为下一个内循环的起止位置,避免数组越界和重复打印。

    code:

     1 public ArrayList<Integer> printMatrix(int [][] matrix) {
     2         ArrayList<Integer> list = new ArrayList<Integer>();
     3         int x = matrix.length;
     4         int y = matrix[0].length;
     5         int total = x*y;
     6         int i=0,j=0;    //i控制横轴,j控制纵轴
     7         int count=0;    //记录旋转次数。
     8         while(total>0) {
     9             //
    10             while(total>0 &&j<(y-count) ) {
    11                 list.add(matrix[i][j]);
    12                 j++;
    13                 total--;
    14             }
    15             j--;
    16             i++;
    17             //
    18             while(total>0 && i<(x-count)) {
    19                 list.add(matrix[i][j]);
    20                 i++;
    21                 total--;
    22             }
    23             i--;
    24             j--;
    25             //
    26             while(total>0 && j>=count) {
    27                 list.add(matrix[i][j]);
    28                 j--;
    29                 total--;
    30             }
    31             j++;
    32             i--;
    33             //左:为了重复打印,所以i>count
    34             while(total>0 && i>count) {
    35                 list.add(matrix[i][j]);
    36                 i--;
    37                 total--;
    38             }
    39             i++;
    40             j++;
    41             count++;
    42             
    43             
    44         }
    45         return list;
    46     }
  • 相关阅读:
    js实现分享到QQ
    js 复制粘贴
    js弹窗 js弹出DIV,并使整个页面背景变暗
    PHP实现大转盘抽奖算法
    ext 树节点操作
    ExtJS4图片验证码的实现
    随笔分类
    Oracle、MySql、SQLServer 数据分页查询
    Repeater控件使用(含删除,分页功能)
    SQL compute by 的使用
  • 原文地址:https://www.cnblogs.com/dream-flying/p/12893149.html
Copyright © 2011-2022 走看看