题目传送——>力扣
在纸上画出一个正方形,利用正方形的四个边来进行解题,相当于这四个边就是数组的限制条件。来看一下力扣官网的动图,很容易理解。
看完这个,应该就有思路了,不断往里缩就能实现。代码如下:
- func generateMatrix(n int) [][]int {
- left,right,top,bottom:=0,n-1,0,n-1;
- a := make([][]int, n)
- for i := range a {
- a[i]=make([]int,n)
- }
- num:=1
- for left<=right&&top<=bottom {
- for i := left; i <=right; i++ {
- a[left][i]=num
- num++
- }
-
- for i := top+1; i <=bottom ; i++ {
- a[i][right]=num
- num++
- }
-
- for i := right-1; i>left ; i-- {
- a[bottom][i]=num
- num++
- }
-
- for i := bottom; i >top ; i-- {
- a[i][left]=num
- num++
- }
- left++
- right--
- bottom--
- top++
- }
- return a
- }