题解 | #螺旋矩阵#
螺旋矩阵
https://www.nowcoder.com/practice/7edf70f2d29c4b599693dc3aaeea1d31
package main
/**
*
* @param matrix int整型二维数组
* @return int整型一维数组
*/
func spiralOrder(matrix [][]int) []int {
n := len(matrix)
res := make([]int, 0)
if n <= 0 {
return res
}
m := len(matrix[0])
dx := []int{0, 1, 0, -1}
dy := []int{1, 0, -1, 0}
ranX := []int{0, n - 1}
ranY := []int{0, m - 1}
dir := 0
for i, j := 0, 0; ranX[0] <= ranX[1] && ranY[0] <= ranY[1]; {
res = append(res, matrix[i][j])
if dir == 0 && j == ranY[1] {
dir = 1
//ranY[1]--
ranX[0]++
} else if dir == 1 && i == ranX[1] {
dir = 2
ranY[1]--
} else if dir == 2 && j == ranY[0] {
dir = 3
ranX[1]--
} else if dir == 3 && i == ranX[0] {
dir = 0
ranY[0]++
}
i += dx[dir]
j += dy[dir]
}
return res
}
查看9道真题和解析