59. 螺旋矩阵 II
59. 螺旋矩阵 II
代码
func generateMatrix(n int) [][]int {
res := make([][]int, n)
for i := range res {
res[i] = make([]int, n)
}
// 方向
// 右下左上
direction := [][]int{{0, 1}, {1, 0}, {0, -1}, {-1, 0}}
curDirectionIdx := 0
curPos := []int{0, 0}
for i := 0; i < n*n; i++ {
res[curPos[0]][curPos[1]] = i+1
nexPos := []int{curPos[0]+direction[curDirectionIdx][0], curPos[1] + direction[curDirectionIdx][1]}
if nexPos[0] < 0 || nexPos[0] >= n ||
nexPos[1] < 0 || nexPos[1] >= n ||
res[nexPos[0]][nexPos[1]] > 0 {
curDirectionIdx = (curDirectionIdx+1)%4
nexPos = []int{curPos[0]+direction[curDirectionIdx][0], curPos[1] + direction[curDirectionIdx][1]}
}
curPos = nexPos
}
return res
}
非常好,螺旋矩阵做的很快
几个关键因素
- 定义方向数组
- 当前方向
- 当前位置
- 转方向的条件
上一题: 54. 螺旋矩阵
上一题使用的是题解中某一个做法,四次方向转换都在循环中完成
这次用的是方向做法
本站总访问量次 本站访客数人次 本文总阅读量次