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
//C++
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;
}
};