File tree 1 file changed +51
-0
lines changed
solution/054.Spiral Matrix
1 file changed +51
-0
lines changed Original file line number Diff line number Diff line change
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
+ };
You can’t perform that action at this time.
0 commit comments