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     }
  • 相关阅读:
    CodeForces 710CMagic Odd Square(经典-奇数个奇数&偶数个偶数)
    CodeForces 710A King Moves(水题-越界问题)
    CodeForces 701C They Are Everywhere (滑动窗口)
    CodeForces 701B Cells Not Under Attack
    [补档]happiness
    [补档]王者之剑
    [补档]士兵占领
    [补档]搭配飞行员
    [补档]暑假集训D6总结
    [补档][Lydsy2017年4月月赛]抵制克苏恩
  • 原文地址:https://www.cnblogs.com/dream-flying/p/12893149.html
Copyright © 2011-2022 走看看