力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

1、求出当前矩阵左上角的元素和右下角的元素。
2、根据这两个元素来确定我们需要遍历的具体位置。
3、当遍历完一圈的时候更新左上角元素和右下角元素。
当遍历最后一行的时候需要满足x1
当遍历第一列的时候需要满足y1
- class Solution
- {
- // 画图去分析边界情况
- public:
- vector<int> spiralOrder(vector
int >>& matrix) - {
- // m行n列
- int m=matrix.size();
- int n=matrix[0].size();
- vector<int> ret;
- // 左上角的元素 (x1,y1)
- // 右上角的元素 (x2,y2)
- int x1=0,y1=0;
- int x2=m-1,y2=n-1;
-
- while(x1<=x2&&y1<=y2)
- {
- // 第一行
- for(int i=y1;i<=y2;i++)
- ret.push_back(matrix[x1][i]);
- // 最后一列
- for(int i=x1+1;i<=x2;i++)
- ret.push_back(matrix[i][y2]);
- // 最后一行
- // 若x1==x2最后一行就没有需要打印的数据了,因为仅剩的一个元素已经在最后一列打印过了
- if(x1
- {
- for(int i=y2-1;i>=y1;i--)
- ret.push_back(matrix[x2][i]);
- }
- // 第一列
- // 若y1==y2第一列就没有需要打印的数据了,因为仅剩的一个元素已经在第一行打印过了
- if(y1
- {
- for(int i=x2-1;i>=x1+1;i--)
- ret.push_back(matrix[i][y1]);
- }
- x1++;
- y1++;
- x2--;
- y2--;
- }
- return ret;
- }
- };
-
相关阅读:
系统运行缓慢,CPU 100%,以及Full GC次数过多问题的排查思路
【Python Web】Flask框架(七)jQuery类库
Spring Boot之事务管理
API文档工具knife4j使用详解
代碼隨想錄算法訓練營|第五十二天|123 买卖股票的最佳时机III、188 买卖股票的最佳时机IV。刷题心得(c++)
Redis从入门到放弃(7):主从复制
将字符串转换为小写形式字符串.casefold()
vue3使用西瓜播放器播放flv、hls、mp4视频
一篇解决登录与支付
mysql的组提交
-
原文地址:https://blog.csdn.net/m0_57249790/article/details/133096452