输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8
2016-11-11 22:27
1111 查看
import java.util.ArrayList; import java.util.Arrays; public class Solution { public ArrayList<Integer> printMatrix(int [][] matrix) { ArrayList<Integer> list = new ArrayList<Integer>(); int[][] m = matrix; //一般情况:多行多列 while(m.length > 1 && m[0].length > 1){ for(int i = 0; i < m[0].length; ++i){ list.add(m[0][i]); } m = rotateMatrix(eraseFirstRow(m)); } //只有一行或一列 if(m[0].length == 1){ for(int i = 0; i < m.length; ++i){ list.add(m[i][0]); } return list; } if(m.length == 1){ for(int i = 0; i < m[0].length; ++i){ list.add(m[0][i]); } return list; } return list; } //矩阵逆时针旋转90度 public static int[][] rotateMatrix(int[][] matrix){ int col = matrix[0].length; int row = matrix.length; int[][] rotateMatrix = new int[col][row]; for(int i = col-1; i >= 0; i--){ for(int j = 0; j < row; j++){ rotateMatrix[col-1-i][j] = matrix[j][i];//原矩阵从右往左、从上到下,新矩阵从左到右、从上往下 } } return rotateMatrix; } //删除矩阵的第一行并返回新的矩阵 public static int[][] eraseFirstRow(int[][] matrix){ int col = matrix[0].length; int row = matrix.length; int[][] erasedMatrix = new int[row-1][col]; for(int i = 1; i < row; i++){ for(int j = 0; j < col; j++){ erasedMatrix[i-1][j]=matrix[i][j]; } } return erasedMatrix; } }
相关文章推荐
- java 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,
- 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8
- 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8
- 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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.
- 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,
- 剑指offer_输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字
- 输入一个矩阵,按照从外向里顺时针的顺序依次打印出每一个数字
- 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字
- 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字
- java-51-输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
- C++输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,
- 剑指offer面试题:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字
- [python] 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字[顺时针打印矩阵]
- 输入一个矩阵,按照从外向里以顺时针的顺序依次扫印出每一个数字
- 输入一个矩阵,按照从外到里以顺时针的顺序依次打印每一个数字
- 从外向里以顺时针的顺序依次打印出矩阵的每一个数字
- 启动2个线程打印递增的数字, 线程1先打印1,2,3,4,5, 然后是线程2打印6,7,8,9,10, 然后再线程1打印11,12,13,14,15,直到打印到50
- 现有杂乱无序的1-20二十个数,这二十个数为:1,18,4,13,6,10,15,2,17,3,19,7,16,8,11,14,9,12,5,20,试依次求出相邻四个数之和的最大和最小值
- |1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20所有这些字符串,把它的数字一个个剥离??
- 1,2,3,5,7,8,10,11,12,13,14,15,16,21,22 -》1~3,5,7~8,10~16,21~22