前言
猛起更新。
正文
问题来源
本问题来自leetcode上的56题。
问题描述
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例 1:
输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
分析:
func generateMatrix(n int) [][]int {
ans := make([][]int, n)
for i := 0; i < n; i++ {
ans[i] = make([]int, n)
}
index:=1
x1, x2, y1, y2 := 0, n-1, 0, n-1
for x1 <= x2 && y1 <= y2 {
for i := y1; i <= y2; i++ {
ans[x1][i] = index
index++
}
for i := x1+1; i <= x2; i++ {
ans[i][y2] = index
index++
}
if x1 < x2 && y1 < y2 {//这个判断可以不需要
for i := y2-1; i >= y1; i-- {
ans[x2][i] = index
index++
}
for i := x2-1; i > x1; i-- {
ans[i][y1] = index
index++
}
}
x1++
x2--
y1++
y2--
}
return ans
}
总结:
勤思考。
结语
不管怎么样好好加油。