【数组】59. 螺旋矩阵 II
题目:

解答:
1 class Solution { 2 public: 3 vector<vector<int>> generateMatrix(int n) 4 { 5 vector< vector<int> > matrix(n, vector<int>(n)); 6 if (n == 0) 7 { 8 return matrix; 9 } 10 11 ssize_t beginX = 0, endX = n - 1; 12 ssize_t beginY = 0, endY = n - 1; 13 int num = 1; 14 15 while (true) 16 { 17 for (ssize_t i = beginX; i <= endX; ++i) 18 matrix[beginY][i] = num++; 19 if (++beginY > endY) 20 break; 21 for (ssize_t i = beginY; i <= endY; ++i) 22 matrix[i][endX] = num++; 23 if (beginX > --endX) 24 break; 25 for (ssize_t i = endX; i >= beginX; --i) 26 matrix[endY][i] = num++; 27 if (beginY > --endY) 28 break; 29 for (ssize_t i = endY; i >= beginY; --i) 30 matrix[i][beginX] = num++; 31 if (++beginX > endX) 32 break; 33 } 34 return matrix; 35 36 } 37 };

浙公网安备 33010602011771号