C++如何实现螺旋矩阵
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,这篇文章主要介绍"C++如何实现螺旋矩阵"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"C++如何实现螺旋矩阵"文章能帮助大家解决问题。Spiral Matri
千家信息网最后更新 2025年02月23日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安全错误
数据库的锁怎样保障安全
软件开发变更控制
服务器如何查询出错报告
关于共建网络安全的手抄报
软件开发模型及特点
高中学历 软件开发
辽宁锦州网络安全教育
网络安全报道案例
唐山App软件开发费用
网络安全分析研判
江北应用软件开发服务
怎么用自己的整合包开服务器
灵魂服务器
手机使用云服务器访问twitter
w10匹配什么sql数据库
21世纪 软件开发
被黑影响服务器吗
建服务器大厅
石岐定制软件开发
zynq用什么软件开发
广东企业云空间工具云服务器
做软件开发要学什么专业
软件开发规范办事流程目的
网络安全工作有多难
国电投网络安全
疫情软件开发千名程序员
北京服务器机房按需定制云服务器
徐汇区微型软件开发有哪些
三星杂志服务器不可用
如何管理100台服务器
苏州安卓软件开发团队