Just like Spiral Matrix 1 (Java)


#1
public class Solution {
public ArrayList<ArrayList<Integer>> generateMatrix(int A) {
    ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();
	
	for(int i = 0; i < A; i++) {
		ArrayList<Integer> temp1 = new ArrayList<Integer>(A);
		for(int j = 0; j < A; j++) {
			temp1.add(-1);
		}
		res.add(temp1);
	}
	int t = 0, l = 0, r = A - 1, b = A - 1;
	int dir = 1;
	int n = 1;
	while(t <= b && l <= r) {
		if(dir == 1) {
			ArrayList<Integer> temp = res.get(t);
			for(int i = l; i <= r; i++) {
				temp.set(i, n++);
			}
			t++;
			dir = 2;
		}
		else if(dir == 2) {
			for(int i = t; i <= b; i++) {
				if(res.get(i) == null) {
					res.add(i, new ArrayList<Integer>());
					ArrayList<Integer> temp = res.get(i);
					temp.set(r, n++);
				}
				else {
					ArrayList<Integer> temp = res.get(i);
					temp.set(r, n++);
				}
			}
			r--;
			dir = 3;
		}
		else if(dir == 3) {
			ArrayList<Integer> temp = res.get(b);
			for(int i = r; i >= l; i--) {
				temp.set(i, n++);
			}
			b--;
			dir = 4;
		}
		else if(dir == 4) {
			for(int i = b; i >= t; i--) {
				if(res.get(i) == null) {
					res.add(i, new ArrayList<Integer>());
					ArrayList<Integer> temp = res.get(i);
					temp.set(l, n++);
				}
				else {
					ArrayList<Integer> temp = res.get(i);
					temp.set(l, n++);
				}
			}
			l++;
			dir = 1;
		}
	}
	
	return res;
}

}