牛客:FZ12 牛牛的顺时针遍历

FZ12 牛牛的顺时针遍历

文章目录

题目描述

题解思路

通过一个变量来记录当前方向,遍历矩阵,每次遍历一条边,将该边的信息加入到结果中

题解代码

go 复制代码
func spiralOrder(matrix [][]int) []int {
	// write code here
	m, n := len(matrix), len(matrix[0])
	final := m * n
	res := make([]int, 0, final)
	// 0 >
	// 1 v
	// 2 <
	// 3 ^
	var direct int
	for i := 0; i < final; {
		switch direct {
		case 0:
            i += len(matrix[0])
			res = append(res, matrix[0]...)
			matrix = matrix[1:]
			direct = 1
		case 1:
			h := len(matrix)
            i += h
			v := len(matrix[0]) - 1
			for j := 0; j < h; j++ {
				res = append(res, matrix[j][v])
				matrix[j] = matrix[j][:v]
			}
            direct = 2
		case 2:
            v := len(matrix[0])
            i += v
			h := len(matrix) - 1
            for j := v - 1; j >= 0; j-- {
                res = append(res, matrix[h][j])
            }
            matrix = matrix[:h]
            direct = 3
		case 3:
			h := len(matrix)
            i += h
			for j := h - 1; j >= 0; j-- {
				res = append(res, matrix[j][0])
				matrix[j] = matrix[j][1:]
			}
            direct = 0
		}
	}
    return res
}
相关推荐
沈浩(种子思维作者)几秒前
没有错误,正确将一文不值
人工智能·python·算法·量子计算
x_xbx1 分钟前
LeetCode:5. 最长回文子串
算法·leetcode·职场和发展
快手技术4 分钟前
免费报名|生成式推荐技术如何实现体系化演进?快手技术沙龙第四期开启!
算法
初夏睡觉5 分钟前
数字截断求和 题解
算法
AZaLEan__6 分钟前
多源 BFS
java·开发语言·算法
喵个咪10 分钟前
AI重构软件开发范式:框架与脚手架为何仍是生产级开发的刚需?
架构·go·ai编程
smith成长之旅14 分钟前
07 | Mem0 框架分析:三路信号融合——语义 + BM25 + Entity Boost 的混合检索
python·算法
wabs66617 分钟前
关于贪心算法章节的【有两个维度问题】的自我总结
算法·贪心算法
未若君雅裁38 分钟前
算法复杂度与数据结构:Java 集合篇的第一块基石
java·数据结构·算法
春日见1 小时前
五分钟入门 强化学习---Q-Learning算法与实现
人工智能·python·深度学习·算法·机器学习·计算机视觉