前言
猛起更新。
正文
问题来源
本问题来自leetcode上的54题。
问题描述
给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。
示例 1:
输入:
[
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]
输出: [1,2,3,6,9,8,7,4,5]
示例 2:
输入:
[
[1, 2, 3, 4],
[5, 6, 7, 8],
[9,10,11,12]
]
输出: [1,2,3,4,8,12,11,10,9,5,6,7]
分析:
func spiralOrder(matrix [][]int) []int {
if len(matrix) == 0 || len(matrix[0]) == 0 {
return nil
}
ans := make([]int, len(matrix)*len(matrix[0]))
index := 0
//ans[0] = matrix[0][0]
//index++
x1, x2, y1, y2 := 0, len(matrix)-1, 0, len(matrix[0])-1
for x1 <= x2 && y1 <= y2 {
for i := y1; i <= y2; i++ {
ans[index] = matrix[x1][i]
index++
}
for i := x1+1; i <= x2; i++ {
ans[index] = matrix[i][y2]
index++
}
if x1 < x2 && y1 < y2 {
for i := y2-1; i >= y1; i-- {
ans[index] = matrix[x2][i]
index++
}
for i := x2-1; i > x1; i-- {
ans[index] = matrix[i][y1]
index++
}
}
x1++
x2--
y1++
y2--
}
return ans
}
总结:
勤思考。
结语
不管怎么样好好加油。