Spiral Matrix II (Medium)
Description
Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
Analysis
跟前一题一样的。。稍微改一下就好了.直接模拟。。
My Solution
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| class Solution { public: vector<vector<int> > generateMatrix(int n) { vector<vector<int> >ans(n,vector<int>(n)); int dx[] = {0,1,0,-1}; int dy[] = {1,0,-1,0}; int u = 0 ,d = n - 1 , l = 0, r = n - 1; int x = 0 , y = 0 , num = 1 , dir = 0; while(num<=n*n){ if(x>=u&&y>=l&&x<=d&&y<=r){ ans[x][y] = num; num++; x+=dx[dir]; y+=dy[dir]; } else{ x-=dx[dir]; y-=dy[dir]; if(dir == 0) u++; else if(dir == 1) r--; else if(dir == 2) d--; else l++; dir = (dir+1)%4; x+=dx[dir]; y+=dy[dir]; } } return ans; } };
|