59. 螺旋矩阵 II
做题思路:
1,这种题一般我是先自己画一下n = 2, n = 3, n = 4, n = 5的图,然后根据图的规律来写
2,虽然找到了规律,但是我觉得这道题还是考的是做题者对自己代码的操控能力.....
3,最后,这道题的代码是单纯的我想到那就写到那的代码,就仅仅是将自己头中简单的思想具体化,所以看上去相当繁杂,可读性极差,哎但是能写出来就好了我,这种题最容易越写越陷入进去,很痛苦的
1 class Solution { 2 public: 3 vector<vector<int>> generateMatrix(int n) { 4 vector<vector<int>>result (n, vector<int>(n, 0)); 5 int quan = n / 2; //绕的圈数 6 int step = n - 1; //绕一条边的时候走的步数 7 int num = 1; //给数组轮流打印下num++ 8 int x = 0, y = 0; //初始 9 while (quan--) { 10 for (int k = 1; k <= step; k++) { //第一条边 11 result[x][y] = num; 12 y++; 13 num++; 14 } 15 for (int k = 1; k <= step; k++) { //第二条边 16 result[x][y] = num; 17 num++; 18 x++; 19 } 20 for (int k = 1; k <= step; k++) { //第三条边 21 result[x][y] = num; 22 num++; 23 y--; 24 } 25 for (int k = 1; k < step; k++) { //第四条边,这里和上面有不同,主要是为了能让移动的坐标进入第二圈的初始位置 26 result[x][y] = num; 27 num++; 28 x--; 29 } 30 result[x][y] = num; 31 num++; 32 y++; //这里是调整到第二圈的初始位置 33 step -= 2; //这里注意,每一圈后,每一条边的步数都会-2 34 } 35 if (n % 2 == 0)return result; 36 else { //如果是奇数的n,则需要补一下中心的数 37 result[n / 2][n / 2] = num; 38 return result; 39 } 40 } 41 };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?