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

顺时针打印矩阵

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;
  }
}
全部评论

相关推荐

程序员牛肉:主要是因为小厂的资金本来就很吃紧,所以更喜欢有实习经历的同学。来了就能上手。 而大厂因为钱多,实习生一天三四百的就不算事。所以愿意培养你,在面试的时候也就不在乎你有没有实习(除非是同级别大厂的实习。) 按照你的简历来看,同质化太严重了。项目也很烂大街。 要么换项目,要么考研。 你现在选择工作的话,前景不是很好了。
点赞 评论 收藏
分享
豆泥🍀:同26届,加油,我也还没找到查看图片
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务