C++如何实现螺旋矩阵
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章主要介绍"C++如何实现螺旋矩阵"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"C++如何实现螺旋矩阵"文章能帮助大家解决问题。Spiral Matri
千家信息网最后更新 2025年12月02日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安全错误
数据库的锁怎样保障安全
软件开发都需要什么设备
核心数据库管理员
2014227网络安全
宁波软件开发要求
小程序定制软件开发广告语
格力电器应用软件开发怎么样
腾讯云25端口邮件服务器
网络技术的提高有什么风险
校园网络安全的重要性
美国网络安全股走势
网络安全粘贴海报
参观分行服务器机房
事务的定义 数据库
lol网三服务器所在地
辽宁专业软件开发哪里好
我的手机国际服pvp服务器
我的世界服务器建筑高度限制修改
网络安全委员会 华为
网络安全法 是一部全面规范
工业互联网信息化网络安全
苹果id老是提示连接不到服务器
数据库组合字段
宿州服务器机箱设备
推进网络安全进校园
建access数据库
冒险岛路西德服务器人还多吗
济南鲁商网络技术有限公司
语希网络技术有限公司靠谱吗
北京用友软件开发公司
麻将软件开发价格合理