时间限制:1秒 空间限制:32768K 热度指数:294985
本题知识点: 数组
题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下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.
package xidian.lili.niuke;
import java.util.ArrayList;
import java.util.List;
public class printMatrix {
public static ArrayList<Integer> printMatrix(int [][] matrix) {
ArrayList<Integer> list=new ArrayList();
int row=matrix.length;//行数
int col=matrix[0].length;//列数
int circle=(Math.min(row, col)+1)/2;//多画几个图,可知循环打印的圈数
System.out.println(circle);
System.out.println(row);
System.out.println(col);
for(int i=0;i<circle;i++){
for(int j=i;j<col-i;j++){
list.add(matrix[i][j]);
System.out.println("从左到右"+matrix[i][j]);
}
for(int j=i+1;j<row-i;j++){
list.add(matrix[j][col-i-1]);
System.out.println("从上到下"+matrix[j][col-i-1]);
}
for(int j=col-i-2;j>=i&&row-i-1!=i;j--){
list.add(matrix[row-i-1][j]);
System.out.println("从右到左"+matrix[row-i-1][j]);
}
for(int j=row-i-2;j>i&&col-i-1!=i;j--){
list.add(matrix[j][i]);
System.out.println("从下到上"+matrix[j][i]);
}
}
return list;
}
public static void main(String[] args) {
//int [][]matrix={{1},{2},{3},{4},{5}};
int [][]matrix={{1,2,3,4,5}};
List<Integer>l=printMatrix(matrix);
for(Integer i:l){
System.out.print(i+" ");
}
}
}
注意:后面两个循环可以分别用row*1的矩阵和1*col的矩阵调试出循环结束条件
以及循环打印的圈数是行列最小值除以2再向上取整