Given a matrix of m x n elements (m rows, n columns), return
all elements of the matrix in spiral order.
package core.geeks;
public class SpriralMatrix {
public static void main(String[] args)
{
int[][] array = { {0, 1, 2, 3, 4},
{5,
6, 7, 8, 9},
{10,
11, 12, 13, 14},
{15,
16, 17, 18, 19}};
printSpiral(array);
}
private static void printSpiral(int[][] array) {
int left=0; int right = array[0].length-1;
int top = 0; int bottom = array.length-1;
int count = 0;
while(right>=left
&& top <= bottom) {
if(count==0) {
// print top row
for(int i =
left;i<=right;i++) {
System.out.print(" "+array[top][i]);
}
top++;
} else if(count==1) {
// print right most
column
for(int i =
top;i<=bottom;i++) {
System.out.print(" "+array[i][right]);
}
right--;
} else if(count==2) {
// print bottom row
in reverse order.
for(int i =
right;i>=left;i--) {
System.out.print(" "+array[bottom][i]);
}
bottom--;
} else if(count==3) {
// print right most
column
for(int i =
bottom;i>=top;i--) {
System.out.print(" "+array[i][left]);
}
left
++;
}
count =
(count+1)%4;
}
}
}
Output:
0 1 2 3 4 9 14 19 18 17 16 15 10 5 6 7 8 13 12 11
No comments:
Post a Comment