关于leetcode螺旋矩阵的一道题解,有点不太明白,能否清晰的解释一下if语句里面的细节以及这个思路是怎么实现的
```java
public int[][] generateMatrix(int n) {
int[][] res = new int[n][n];
//方向向量,初始向右
int dx = 0;
int dy = 1;
//坐标
int x = 0;
int y = 0;
for (int i = 1; i <= n * n; i++) {
res[x][y] = i;
//这个判断语句最巧妙
//如果撞头就向右调转90度 先加n再对n取模这个操作能防止越界,省了很多判断语句
if (res[(x + dx + n) % n][(y + dy + n) % n] != 0) {
int tem = dy;
dy = -dx;
dx = tem;
}
x += dx;
y += dy;
}
return res;
}
```