Spiral Matrix II

 1 class Solution {
 2 public:
 3     vector<vector<int> > generateMatrix(int n) {
 4          if (n == 0) return vector<vector<int> >();
 5         vector<vector<int> > res(n, vector<int>(n));
 6         int imin = 0, imax = n-1, jmin = 0, jmax = n-1;
 7         int number = 1;
 8         while (true) {
 9             for (int j = jmin; j <= jmax; ++j) 
10                 res[imin][j] = number++;
11             if (++imin > imax) break;
12             for (int i = imin; i <= imax; ++i) 
13                 res[i][jmax] = number++;
14             if (jmin > --jmax) break;
15             for (int j = jmax; j >= jmin; --j) 
16                 res[imax][j] = number++;
17             if (imin > --imax) break;
18             for (int i = imax; i >= imin; --i) 
19                 res[i][jmin] = number++;
20             if (++jmin > jmax) break;
21         }
22         return res;
23     }
24 };

Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
For example,
Given n = 3,
You should return the following matrix:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]

原文地址:https://www.cnblogs.com/zhengjiankang/p/3667804.html