You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.1 KiB
54 lines
1.1 KiB
package class40;
|
|
|
|
public class Code05_PrintMatrixSpiralOrder {
|
|
|
|
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.print(m[tR][i] + " ");
|
|
}
|
|
} else if (tC == dC) {
|
|
for (int i = tR; i <= dR; i++) {
|
|
System.out.print(m[i][tC] + " ");
|
|
}
|
|
} else {
|
|
int curC = tC;
|
|
int curR = tR;
|
|
while (curC != dC) {
|
|
System.out.print(m[tR][curC] + " ");
|
|
curC++;
|
|
}
|
|
while (curR != dR) {
|
|
System.out.print(m[curR][dC] + " ");
|
|
curR++;
|
|
}
|
|
while (curC != tC) {
|
|
System.out.print(m[dR][curC] + " ");
|
|
curC--;
|
|
}
|
|
while (curR != tR) {
|
|
System.out.print(m[curR][tC] + " ");
|
|
curR--;
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void main(String[] args) {
|
|
int[][] matrix = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 },
|
|
{ 13, 14, 15, 16 } };
|
|
spiralOrderPrint(matrix);
|
|
|
|
}
|
|
|
|
}
|