leetcode Spiral Matrix II
题目:是Spiral Matrix相关的的。这题的意思是给定一个n,那么在n*n的矩阵里按照循环记录将1,2,3,..., n*n。如下如果给定3,那么:
[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]
一开始我想是不是有数学公式直接下标对应的,那直接遍历输出就可以了。但是推了一会,没有什么好的头绪。于是就分情况讨论了,和Spiral Matrix一样的分情况,只是这里的分情况是记录在数组里面。
利用上,下,左,右,分别记录每次循环可以到达的四个边界,我们每次就输出一环,走完一环往内走。
需要注意的:
1.要用下标访问vector<vector> >需要先声明大小才可以使用下标访问。
2.每走完一环,相应更新四个方向。
3.如果是奇数,那么n*n这个数需要另外存。也就是存在[n/2][n/2]的位置。
class Solution { public: vector<vector<int> > generateMatrix(int n) { vector<int> sub(n); vector<vector<int> > ans(n, sub); // 也可以用vector<vector<int> > ans(n, vector<int>(n)); if (n < 1) return ans; int val = 1, left = 0, right = n-1, up = 1, down = n-1; for (int i = 0; i < n/2; i++) { for (int j = left; j <= right; j++) { ans[i][j] = val++; } for (int j = up; j <= down; j++) { ans[j][right] = val++; } for (int j = right - 1; j>=left; j--) { ans[down][j] = val++; } for (int j = down - 1; j >= up; j--) { ans[j][left] = val++; } left++; right--; up++; down--; } if (n%2) ans[n/2][n/2] = n*n; return ans; } };
2015/03/29:
一环一环往里填,需要注意的是每次环的起始,例如 1 2 3 填入了 那么最右边填的就是 4 和 5 最下边填的就是 6 和 7 然后 从左下到左上的时候是要填 8,所以用left right up down控制好即可,Python代码如下:
class Solution: # @return a list of lists of integer def generateMatrix(self, n): mylist = [[0]*n for i in range(n)] num = 1 left, right, up, down = 0, n-1, 0, n-1 while num <= n**2: for i in range(left, right+1): mylist[up][i] = num num += 1 for i in range(up+1, down+1): mylist[i][right] = num num += 1 for i in range(left, right)[::-1]: mylist[down][i] = num num += 1 for i in range(up+1, down)[::-1]: mylist[i][left] = num num += 1 left += 1 right -= 1 up += 1 down -= 1 return mylist
分类:
LeetCode
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· .NET 进程 stackoverflow异常后,还可以接收 TCP 连接请求吗?
· 本地部署 DeepSeek:小白也能轻松搞定!
· 基于DeepSeek R1 满血版大模型的个人知识库,回答都源自对你专属文件的深度学习。
· 在缓慢中沉淀,在挑战中重生!2024个人总结!
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 大人,时代变了! 赶快把自有业务的本地AI“模型”训练起来!