题解 | #顺时针打印矩阵#

顺时针打印矩阵

http://www.nowcoder.com/practice/9b4c81a02cd34f76be2659fa0d54342a

旋转魔方的java解法
1 2 3
4 5 6
7 8 9
第一次 取 1 2 3
经过旋转 数组变成
6 9
5 8
4 7
再取 第一行 6 9
循环往复 符合递归的解法

import java.util.ArrayList;
public class Solution {
    //设置返回值
  private static ArrayList<Integer> res = new ArrayList<>();

  public static ArrayList<Integer> printMatrix(int [][] matrix) {
    if (matrix == null) return res;
     //行列都为1的情况可以直接遍历打印
    if (matrix.length == 1 || matrix[0].length == 1){
      for (int[] ints : matrix) {
        for (int anInt : ints) {
          res.add(anInt);
        }
      }
      return res;
    }
    //否则取第一行
    for (int i = 0; i < matrix[0].length; i++) {
      res.add(matrix[0][i]);
    }
    //旋转matrix
    int[][] newMatrix = transMatrix(matrix);
    return printMatrix(newMatrix);
  }

//旋转数组记得一一对应
  private static int[][] transMatrix(int[][] matrix) {
    int row = matrix.length;
    int col = matrix[0].length;
    int[][] resMatrix = new int[col][row - 1];
    for (int i = col-1; i >= 0; i--) {
      for (int j = 1; j < row; j++) {
        resMatrix[col-i-1][j-1] = matrix[j][i] ;
      }
    }
    return resMatrix;
  }
}
全部评论

相关推荐

蚂蚁 基架java (n+6)*16 签字费若干
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务