FZ12 牛牛的顺时针遍历
文章目录
- FZ12 牛牛的顺时针遍历
- 题目描述
- 题解思路
- 题解代码
题目描述
题解思路
通过一个变量来记录当前方向,遍历矩阵,每次遍历一条边,将该边的信息加入到结果中
题解代码
func spiralOrder(matrix [][]int) []int {// write code herem, n := len(matrix), len(matrix[0])final := m * nres := make([]int, 0, final)// 0 >// 1 v// 2 <// 3 ^var direct intfor i := 0; i < final; {switch direct {case 0:i += len(matrix[0])res = append(res, matrix[0]...)matrix = matrix[1:]direct = 1case 1:h := len(matrix)i += hv := len(matrix[0]) - 1for j := 0; j < h; j++ {res = append(res, matrix[j][v])matrix[j] = matrix[j][:v]}direct = 2case 2:v := len(matrix[0])i += vh := len(matrix) - 1for j := v - 1; j >= 0; j-- {res = append(res, matrix[h][j])}matrix = matrix[:h]direct = 3case 3:h := len(matrix)i += hfor j := h - 1; j >= 0; j-- {res = append(res, matrix[j][0])matrix[j] = matrix[j][1:]}direct = 0}}return res
}