leetcode59. 螺旋矩阵 II

题目描述:

给你一个正整数 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
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值