题目地址
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
题目解析
按照顺时针一次遍历,遍历外外层遍历里层。
代码如下
class Solution
{
public:
vector<int> spiralOrder(vector<vector<int>>& matrix)
{
if(matrix.empty()) return {};
vector<int> ret;
int x1=0,x2=matrix.size()-1;
int y1=0,y2=matrix[0].size()-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]);
// 打印最后一行
if(x1<x2)
for(int i=y2-1;i>=y1;i--) ret.push_back(matrix[x2][i]);
// 打印第一列
if(y1<y2)
for(int i=x2-1;i>x1;i--) ret.push_back(matrix[i][y1]);
x1++;
y1++;
x2--;
y2--;
}
return ret;
}
};