# @lc code=start classSolution: defgenerateMatrix(self, n: int) -> [[int]]: l, r, t, b = 0, n - 1, 0, n - 1 mat = [[0for _ inrange(n)] for _ inrange(n)] num, tar = 1, n * n while num <= tar: for i inrange(l, r + 1): # left to right mat[t][i] = num num += 1 t += 1 for i inrange(t, b + 1): # top to bottom mat[i][r] = num num += 1 r -= 1 for i inrange(r, l - 1, -1): # right to left mat[b][i] = num num += 1 b -= 1 for i inrange(b, t - 1, -1): # bottom to top mat[i][l] = num num += 1 l += 1 return mat
classSolution{ publicint[][] generateMatrix(int n) { int[][] result = newint[n][n]; int index = 1; int l = 0; int r = n - 1; int t = 0; int b = n - 1; while (index <= n * n) { // 左闭右开区间 for (int i = l; i < r + 1; ++i) { result[t][i] = index; index++; } t += 1; for (int i = t; i < b + 1; ++i) { result[i][r] = index; index++; } r -= 1; for (int i = r; i > l - 1; --i) { result[b][i] = index; index++; } b -= 1; for (int i = b; i > t - 1; --i) { result[i][l] = index; index++; } l += 1; } return result; } }