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){ ArrayList arrayList=newArrayList<>(); intx=0; introw=matrix.length; intline=matrix[matrix.length-1].length; while(x printLine(int[][]matrix,intr1,intl1,intr2,intl2){ ArrayList
arrayList=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{ publicArrayList printMatrix(int[][]array){ ArrayList result=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; } } */
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。