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 ]] 写一个回旋的矩阵
class Solution {public: vector> generateMatrix(int n) { vector >re; for(int i = 0 ;i < n; i++) { vector temp(n,0); re.push_back(temp); } int direction =0; //0 right ,1 down ,2 left, 3 up int length = n; int x = 0; int y = 0; int step = 0; for(int i = 1 ; i <= n*n ; i++) { re[x][y] = i; step++; if(step == length) //should turn { direction = (direction + 1)%4; if(direction == 0) { y = y+1; step = 0; } else if(direction == 1) { x = x+1; length--; step = 0; } else if(direction == 2) { y = y-1; step = 0; } else { x = x-1; length--; step = 0; } } else { if(direction == 0) y = y+1; else if(direction == 1)x = x+1; else if(direction == 2)y = y-1; else x = x-1; } } return re; }};