生成一个 n×n 空矩阵 matrix,随后模拟整个向内环绕的填入过程:定义当前左右上下边界 left,right,above,below,初始值 num = 1,迭代终止值 tar = n * n;当 num <= tar 时,始终按照 从左到右 从上到下 从右到左 从下到上 填入顺序循环,每次填入后:执行 num += 1:得到下一个需要填入的数字; 更新边界:例如从左到右填完后,上边界 t += 1,相当于上边界向内缩 1。
classSolution { public: vector<vector<int>> generateMatrix(int n) { vector< vector<int>> matrix(n, vector<int>(n, 0)); int left = 0; int right = n-1; int above = 0; int below = n-1; int tar = n*n; int num = 1; while(num <= tar){ for(int i = left; i <= right; i++) matrix[above][i] = num++; above++; for(int i = above; i <= below; i++) matrix[i][right] = num++; right--; for(int i = right; i >= left; i--) matrix[below][i] = num++; below--; for(int i = below; i >= above; i--) matrix[i][left] = num++; left++;