go语言实现LeetCode59 螺旋矩阵Ⅱ

题目传送——>力扣

在纸上画出一个正方形,利用正方形的四个边来进行解题,相当于这四个边就是数组的限制条件。来看一下力扣官网的动图,很容易理解。

go语言实现LeetCode59 螺旋矩阵Ⅱ_第1张图片

go语言实现LeetCode59 螺旋矩阵Ⅱ_第2张图片

 go语言实现LeetCode59 螺旋矩阵Ⅱ_第3张图片

go语言实现LeetCode59 螺旋矩阵Ⅱ_第4张图片go语言实现LeetCode59 螺旋矩阵Ⅱ_第5张图片go语言实现LeetCode59 螺旋矩阵Ⅱ_第6张图片go语言实现LeetCode59 螺旋矩阵Ⅱ_第7张图片go语言实现LeetCode59 螺旋矩阵Ⅱ_第8张图片go语言实现LeetCode59 螺旋矩阵Ⅱ_第9张图片go语言实现LeetCode59 螺旋矩阵Ⅱ_第10张图片go语言实现LeetCode59 螺旋矩阵Ⅱ_第11张图片go语言实现LeetCode59 螺旋矩阵Ⅱ_第12张图片go语言实现LeetCode59 螺旋矩阵Ⅱ_第13张图片go语言实现LeetCode59 螺旋矩阵Ⅱ_第14张图片go语言实现LeetCode59 螺旋矩阵Ⅱ_第15张图片看完这个,应该就有思路了,不断往里缩就能实现。代码如下:

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
}

你可能感兴趣的:(算法,开发语言,golang,后端,算法,数据结构)