classSolution { public: vector<vector<int>> generateMatrix(int n) { vector<vector<int>> res(n, vector<int>(n, 0)); if (n == 0) return res; int left = 0, right = n - 1, up = 0, down = n - 1, val = 1; while (val <= n * n) { if (up <= down) { for (int i = left; i <= right; i++) { res[up][i] = val++; } up++; } if (left <= right) { for (int i = up; i <= down; i++) { res[i][right] = val++; } right--; } if (up <= down) { for (int i = right; i >= left; i--) { res[down][i] = val++; } down--; } if (left <= right) { for (int i = down; i >= up; i--) { res[i][left] = val++; } left++; } } return res; } };