Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.spa
For example,
Given n = 3
,code
You should return the following matrix:blog
[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]
class Solution { public: vector<vector<int> > generateMatrix(int n) { // Start typing your C/C++ solution below // DO NOT write int main() function vector<vector<int> > result; if (n <= 0) { return result; } result.resize(n); int i , x, begin; for (i = 0; i < n; ++i) { result[i].resize(n); } for (begin = x = 0;;--n, ++begin) { for (i = begin; i < n; ++i) { result[begin][i] = ++x; } for (i = begin + 1;i < n; ++i) { result[i][n - 1] = ++x; } if (n <= begin) { break; } for (i = n - 2; i >= begin; --i) { result[n - 1][i] = ++x; } for (i = n - 2; i > begin; --i) { result[i][begin] = ++x; } } return result; } };