给定一个整型矩阵matrix,请按照转圈的方式打印它。 例如:
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
【要求】 额外空间复杂度为O(1)。
public class e08zhuanquan_print {
public static void spiralOrderPrint(int[][] matrix){
int tR=0;
int tC=0;
int dR=matrix.length-1;
int dC=matrix[0].length-1;
while (tR<=dR&&tC<=dC){
printedge(matrix,tR++,tC++,dR--,dC--);
}
}
public static void printedge(int[][] m,int tR,int tC,int dR,int dC){
if (tR==dR){
for (int i=tC;i<=dC;i++){
System.out.println(m[tR][i]+" ");
}
}
else if (tC==dC){
for (int i=tR;i<=dR;i++){
System.out.println(m[i][tC]+" ");
}
}else{
int curC=tC;
int curR=tR;
while(curC!=dC){
System.out.println(m[tR][curC]);
curC++;
}
while(curR!=dR){
System.out.println(m[curR][dC]);
curR++;
}
while(curC!=tC){
System.out.println(m[dR][curC]);
curC--;
}
while (curR!=tR){
System.out.println(m[curR][tC]);
curR--;
}
}
}
public static void main(String[] args) {
int[][] m={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
spiralOrderPrint(m);
}
}
本文介绍了一种在O(1)额外空间复杂度下,按螺旋顺序打印二维整型矩阵的算法实现。通过定义边界,逐步缩小打印范围,实现了从外向内逐层打印矩阵元素的功能。
1422

被折叠的 条评论
为什么被折叠?



