C++如何实现螺旋矩阵
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍"C++如何实现螺旋矩阵"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"C++如何实现螺旋矩阵"文章能帮助大家解决问题。Spiral Matri
千家信息网最后更新 2026年10月31日C++如何实现螺旋矩阵
这篇文章主要介绍"C++如何实现螺旋矩阵"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"C++如何实现螺旋矩阵"文章能帮助大家解决问题。
Spiral Matrix II 螺旋矩阵之二
Given a positive integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
Example:
Input: 3
Output:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
此题跟之前那道 Spiral Matrix 本质上没什么区别,就相当于个类似逆运算的过程,这道题是要按螺旋的顺序来填数,由于给定矩形是个正方形,我们计算环数时用 n / 2 来计算,若n为奇数时,此时最中间的那个点没有被算在环数里,所以最后需要单独赋值,还是下标转换问题是难点,参考之前 Spiral Matrix 的讲解来转换下标吧,参见代码如下:
解法一:
class Solution {public: vector> generateMatrix(int n) { vector> res(n, vector(n)); int val = 1, p = n; for (int i = 0; i < n / 2; ++i, p -= 2) { for (int col = i; col < i + p; ++col) res[i][col] = val++; for (int row = i + 1; row < i + p; ++row) res[row][i + p - 1] = val++; for (int col = i + p - 2; col >= i; --col) res[i + p - 1][col] = val++; for (int row = i + p - 2; row > i; --row) res[row][i] = val++; } if (n % 2 != 0) res[n / 2][n / 2] = val; return res; }}; 当然我们也可以使用下面这种简化了坐标转换的方法,博主个人还是比较推崇下面这种解法,不容易出错,而且好理解,参见代码如下:
解法二:
class Solution {public: vector> generateMatrix(int n) { vector> res(n, vector(n)); int up = 0, down = n - 1, left = 0, right = n - 1, val = 1; while (true) { for (int j = left; j <= right; ++j) res[up][j] = val++; if (++up > down) break; for (int i = up; i <= down; ++i) res[i][right] = val++; if (--right < left) break; for (int j = right; j >= left; --j) res[down][j] = val++; if (--down < up) break; for (int i = down; i >= up; --i) res[i][left] = val++; if (++left > right) break; } return res; }}; 关于"C++如何实现螺旋矩阵"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。
螺旋
矩阵
C++
知识
解法
下标
代码
方法
行业
过程
还是
问题
不同
实用
没什么
个人
内容
坐标
奇数
实用性
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
耶加雪菲
工业互联网科技新基建
互联网科技资迅
互联网中国科技
齐家互联网科技
百单互联网科技有限公司
壕鑫互联网络科技
深圳天众互联网科技公司
广州紫鲸互联网科技
金融科技和互联网金融
美国互联网前沿科技
银川新华互联网科技职业技术培训学校图片
崇明区互联网教育科技售后服务
互联网金融科技展
互联网科技和法律行业
黑科技 体验场景 互联网大会
产业互联网科技服务公司
富国互联网科技002692
下一代互联网重大应用科技园
武汉亿视互联网科技有限公司
科技与互联网
上海万想互联网科技
深圳国际航运科技和互联网
湖北码尼互联网科技有限公司电话
用友工业互联网科技发展
东营紫格互联网科技
互联网科技收购价值
恒生科技指数 中概互联网
亚光科技低轨卫星互联网
互联网领先科技成果宣传视频