在做题中学习(89):螺旋矩阵
- 软件开发
- 2025-08-28 14:30:02

解法:模拟
思路:创建ret数组,用变量标记原矩阵的行数和列数,遍历一个元素就push_back进ret数组,每次遍历完一行或一列,相应行/列数--,进行顺时针螺旋遍历到为0即可。
细节:要有边界条件的判断,因为要保证 rows>0 && cols > 0,while循环中的某次for结束将对应rows-- 到0 / cols--到0,后面再继续就会出问题,解决方法就是再加一层if判断即可。
附上完整代码:
class Solution { public: vector<int> spiralOrder(vector<vector<int>>& matrix) { vector<int> ret; int rows = matrix.size(),cols = matrix[0].size(); int a = 0,b = -1; while(rows > 0 && cols > 0) { for(int i = 0;i<cols;i++) ret.push_back(matrix[a][++b]); rows--; for(int i = 0;i<rows;i++) ret.push_back(matrix[++a][b]); cols--; if(rows > 0) { for(int i = 0;i<cols;i++) ret.push_back(matrix[a][--b]); rows--; } if(cols > 0) { for(int i = 0;i<rows;i++) ret.push_back(matrix[--a][b]); cols--; } } return ret; } };在做题中学习(89):螺旋矩阵由讯客互联软件开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“在做题中学习(89):螺旋矩阵”
上一篇
为什么外贸办公需要跨境专线网络?
下一篇
网络安全-攻击流程-用户层