题目
给你一个正整数 n
,生成一个包含 1
到 n2
所有元素,且元素按顺时针顺序螺旋排列的 n x n
正方形矩阵 matrix
。
示例 1:
输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]
示例 2:
输入:n = 1
输出:[[1]]
提示:
1 <= n <= 20
解法1(正确)
思想:
先创建一个n*n的空矩阵,再使用螺旋方式给矩阵赋值。
golang代码:
func generateMatrix(n int) [][]int {
ans := [][]int(nil)
//创建n*n的空矩阵
for i := 0; i < n; i++ {
temp := make([]int, 0)
for j := 0; j < n; j++ {
temp = append(temp, 0)
}
ans = append(ans, append([]int(nil), temp...))
}
cur := 1 //当前需要赋予矩阵中的值
end := 0 //end用来缩小圆圈
//当前值大于了n平方后说明已经赋值完毕
for cur <= n*n {
plr, pud := end, end //每一次循环的起点
//往右
for plr < n-end {
ans[pud][plr] = cur
cur++
plr++
}
plr--
pud++
//往下
for pud < n-end {
ans[pud][plr] = cur
cur++
pud++
}
pud--
plr--
//往左
for plr >= end {
ans[pud][plr] = cur
cur++
plr--
}
plr++
pud--
//往上
for pud >= end+1 {
ans[pud][plr] = cur
cur++
pud--
}
end++
}
return ans
}
结果:
执行结果:通过
执行用时:0 ms, 在所有 Go 提交中击败了100.00%的用户
内存消耗:2.2 MB, 在所有 Go 提交中击败了5.05%的用户
官方解答: