a := x + dx[d] //将当前位置按照当前的方向,更新成新的位置(a,b)即求得当前方向的下一个格子位置
b := y + dy[d]
if a < 0 || b < 0 || a >=n || b >= n ||res[a][b] != 0{ //如果下一个格子越界 或者 这个格子已经有数
d=(d+1)%4 //换下一个方向
a=x+dx[d]
b=y+dy[d] //得到新的格子位置
}
x=a //更新待填写的格子的位置
y=b
}
return res
}
复制代码
当然你也可以分别去处理右、下、左、上 四个方向的情况,代码如下:
[code]func generateMatrix(n int) [][]int { top, bottom := 0, n-1 left, right := 0, n-1 num := 1 tar := n * n matrix := make([][]int, n) for i := 0; i < n; i++ { matrix = make([]int, n) } for num