java编程题之顺时针打印矩阵
本文实例为大家分享了java顺时针打印矩阵的具体代码,供大家参考,具体内容如下
github:剑指offer编程题
importjava.util.ArrayList;
/**
*
*剑指offer编程题(JAVA实现)——第19题:顺时针打印矩阵
*
*题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,
如果输入如下4X4矩阵:
1234
5678
9101112
13141516
则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.
*
*/
publicclassTest19{
publicstaticvoidmain(String[]args){
int[][]array1={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
int[][]array2={{1}};
int[][]array3={{1},{2},{3},{4},{5}};
int[][]array4={{1,2,3,4,5}};
int[][]array5={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15}};
printMatrix(array1);
System.out.println();
printMatrix(array2);
System.out.println();
printMatrix(array3);
System.out.println();
printMatrix(array4);
System.out.println();
printMatrix(array5);
}
publicstaticArrayListprintMatrix(int[][]matrix){
ArrayListarrayList=newArrayList<>();
intx=0;
introw=matrix.length;
intline=matrix[matrix.length-1].length;
while(xprintLine(int[][]matrix,intr1,intl1,intr2,intl2){
ArrayListarrayList=newArrayList<>();
for(inti=l1;i<=l2-1;i++){//保证奇数层中间可输出
arrayList.add(matrix[r1][i]);
}
for(intk=r1+1;k<=r2-1;k++){
arrayList.add(matrix[k][l2-1]);
}
if((r2-r1)!=1){//防止重复打印
for(intj=l2-2;j>=l1;j--){
arrayList.add(matrix[r2-1][j]);
}
}
if((l2-l1)!=1){//防止重复打印
for(intu=r2-2;u>r1;u--){
arrayList.add(matrix[u][l1]);
}
}
returnarrayList;
}
}
//其他方法
/**
importjava.util.ArrayList;
publicclassSolution{
publicArrayListprintMatrix(int[][]array){
ArrayListresult=newArrayList();
if(array.length==0)returnresult;
intn=array.length,m=array[0].length;
if(m==0)returnresult;
intlayers=(Math.min(n,m)-1)/2+1;//这个是层数
for(inti=0;i=i)&&(n-i-1!=i);k--)result.add(array[n-i-1][k]);//右至左
for(intj=n-i-2;(j>i)&&(m-i-1!=i);j--)result.add(array[j][i]);//左下至左上
}
returnresult;
}
}
*/
     
  
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
