

class Solution {
public int[][] generateMatrix(int n) {
int[][] res = new int[n][n];
int left = 0, up = 0, right = n - 1, bottom = n - 1;
int total = n * n;
int count = 1;
while (count <= total) {
for (int i = left; i <= right; i++) {
res[up][i] = count;
count++;
}
for (int i = up + 1; i < bottom; i++) {
res[i][right] = count;
count++;
}
for (int i = right; i >= left && left != right; i--) {
res[bottom][i] = count;
count++;
}
for (int i = bottom - 1; i > up; i--) {
res[i][left] = count;
count++;
}
left++;
right--;
up++;
bottom--;
}
return res;
}
}