Spiral order matrix Java solution


#1

public class Solution {
public ArrayList<ArrayList> generateMatrix(int A)
{
ArrayList<ArrayList> res = new ArrayList<ArrayList>();
ArrayList f;
for(int i=0;i<A;i++)
{
f = new ArrayList<>();
for(int j=0;j<A;j++)
{
f.add(-1);
}
res.add(f);
}
int c=1, levels = (int)(Math.ceil((double)A/2));
int l=0;
int row=0,col=0;

    while(l<levels)
    {
        
        for(int i=col;i<res.size()-l;i++)
        {
            f= res.get(l);
            f.set(i,c);
            c++;
        }
        //c=A+1;
        for(int i=row+1;i<res.size()-l;i++)
        { //last column
            f = res.get(i);
            f.set(res.size()-1-l,c);
            c++;
        }
        for(int i=res.size()-2-l;i>=l;i--)
        { // bottom row
            f=res.get(A-1-l);
            f.set(i,c);
            c++;
        }
        //first column bottom down
        for(int i=res.size()-2-l;i>=1+l;i--)
        {
            f=res.get(i);
            f.set(col,c);
            c++;
        }
    
        l++;
        row++;
        col++;
    }
    return res;
    
}

}