package test;
import java.util.*;
public class SpiralMatrix
{
public SpiralMatrix(){}
List<Integer> order= new ArrayList<Integer>();
public List<Integer> spiralOrder(int[][] matrix)
{
int row= matrix.length;
if(row == 0)
{return order;}
int col= matrix[0].length;
int row_index= 0;
int col_index= 0;
Spiral(matrix, row_index, row, col_index, col);
return order;
}
private void Spiral(int[][] matrix, int row_index, int row,
int col_index, int col)
{
if(col_index == col - 1)
{
for(int i=row_index;i<row;i++)
{order.add(matrix[i][col_index]);}
return;
}
if(row_index == row - 1)
{
for(int i=col_index;i<col;i++)
{order.add(matrix[row_index][i]);}
return;
}
for(int i=col_index;i<col;i++)
{
order.add(matrix[row_index][i]);
}
for(int i=row_index+1;i<row;i++)
{
order.add(matrix[i][col-1]);
}
for(int i=col-2;i>col_index;i--)
{
order.add(matrix[row-1][i]);
}
for(int i=row-1;i>row_index;i--)
{
order.add(matrix[i][col_index]);
}
row_index++;col_index++;
row--;col--;
if(row_index > row || col_index >col)
{
return;
}
Spiral(matrix, row_index, row, col_index, col);
}
}