题目描述:
给你一个正整数 n
,生成一个包含 1
到 n2
所有元素,且元素按顺时针顺序螺旋排列的 n x n
正方形矩阵 matrix
。
思路参见代码随想录
以下是go语言实现:
func generateMatrix(n int) [][]int {
startx, starty := 0, 0
offSet := 1 //偏移值
count := 1
//ans := make([][]int, n)
//var ans [][]int //上面两种情况虽然你创建了切片 ans,但是没有初始化其内部的切片。
//这会导致在尝试访问 ans[startx][j] 等位置时出现 panic。
// 初始化矩阵一个n阶矩阵
ans := make([][]int, n)
for i := range ans {
ans[i] = make([]int, n)
}
loop := n / 2 //代表圈数
for ; loop != 0; loop-- {
i, j := startx, starty
//上边
for j = starty; j < n-offSet; j++ {
ans[startx][j] = count
count++
}
//右边
for i = startx; i < n-offSet; i++ {
ans[i][j] = count
count++
}
//下边
for ; j > starty; j-- {
ans[i][j] = count
count++
}
//左边
for ; i > startx; i-- {
ans[i][j] = count
count++
}
startx += 1
starty += 1
offSet += 1
}
// 处理奇数阶矩阵的中心元素
if n%2 == 1 {
ans[n/2][n/2] = count
}
return ans
}