Skip to content

Commit 357b8da

Browse files
authored
Merge pull request doocs#69 from xiapengchng/dev
Update solution 054 with cpp version
2 parents 8ef30f8 + 62ddf67 commit 357b8da

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed
+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
class Solution {
2+
public:
3+
vector<int> spiralOrder(vector<vector<int>>& matrix) {
4+
int row=matrix.size();
5+
if(row==0)
6+
{
7+
vector<int> zero;
8+
zero.clear();
9+
return zero;
10+
}
11+
int col=matrix[0].size();
12+
if(row==1)
13+
return matrix[0];
14+
if(col==0)
15+
{
16+
vector<int> zero;
17+
zero.clear();
18+
return zero;
19+
}
20+
if(col==1)
21+
{
22+
vector<int> temp;
23+
for(int i=0;i<row;i++)
24+
temp.push_back(matrix[i][0]);
25+
return temp;
26+
}
27+
vector<int> result;
28+
result=matrix[0];//result存储第一行
29+
//temp=matirx.pop_back();
30+
for(int i=1;i<matrix.size()-1;i++)
31+
{
32+
result.push_back(matrix[i][matrix[0].size()-1]);//存储每行最后一个
33+
}
34+
for(int i=0;i<col;i++)
35+
{
36+
result.push_back(matrix[row-1][col-1-i]);//倒序存储最后一行
37+
}
38+
for(int i=1;i<row-1;i++)
39+
{
40+
result.push_back(matrix[row-i-1][0]);//倒序存储每一行第一个
41+
vector<int> zz(matrix[row-i-1].begin()+1,matrix[row-i-1].end()-1);//将中间行去除第一个和最后一个数
42+
matrix[row-i-1]=zz;
43+
}
44+
vector<vector<int>> m2(matrix.begin()+1,matrix.end()-1);//将matrix去除第一行和最后一行,递归调用
45+
//cout<<m2.size()<<" "<<m2[0].size();
46+
vector<int> l=spiralOrder(m2);
47+
result.insert(result.end(),l.begin(),l.end());//将递归结果插入result后面
48+
return result;
49+
50+
}
51+
};

0 commit comments

Comments
 (0)