题解 | #螺旋矩阵#

螺旋矩阵

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
}

全部评论

相关推荐

06-25 21:00
门头沟学院 Java
多拆解背记一下当前的高频场景面试题,结合自己的项目经历去作答,面试通过率原来真的不会低!
牛客96559368...:小公司不就是这样的吗,面试要么是点击就送,要么就是往死里拷打,没有一个统一的标准。这个不能代表所有公司
点赞 评论 收藏
分享
流浪的神仙:无恶意,算法一般好像都得9硕才能干算法太卷啦
点赞 评论 收藏
分享
06-26 15:35
武汉大学 运营
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务