Go 解法 向量
空间 o 1
Go 代码
func spiralOrder(matrix [][]int) []int {
dx := []int{0,1,0,-1}
dy := []int{1,0,-1,0}
m := len(matrix)
n := len(matrix[0])
res := make([]int , m * n )
for i , x, y , d := 0 , 0, 0 ,0; i < m * n ; i++{
res[i] = matrix[x][y]
matrix[x][y] = -1 << 63
// 更新坐标
a := x + dx[d]
b := y + dy[d]
if a < 0 || a >= m || b < 0 || b >= n || matrix[a][b] == (-1 << 63) {
d++
d %= 4
a = x + dx[d]
b = y + dy[d]
}
x , y = a , b
}
return res
}