1 class Solution {
2 public:
3
4 vector<vector<int>> generateMatrix(int num) {
5 // Start typing your C/C++ solution below
6 // DO NOT write int main() function
7
8 vector<vector<int>> v(num,vector<int>(num,0));
9
10 int m ,n;
11 m = n = num;
12 if( m == 0 ) return v;
13
14 int startx = 0,starty=0;
15
16
17 int k= 1;
18 while( k<=num*num )
19 {
20 //cout<<starty<<" "<<n <<" "<<k<<endl;
21 for(int i=starty; i<n; i++)
22 v[startx][i] = k++;
23
24 startx ++;
25 if( startx >= m ) break;
26
27 for(int i=startx; i<m; i++)
28 v[i][n-1]=k++;
29
30 n--;
31 if( starty>=n ) break;
32
33 for(int i=n-1; i>=starty; i--)
34 v[m-1][i] = k++;
35
36 m--;
37 if( startx >= m ) break;
38
39 for(int i=m-1; i>=startx; i--)
40 v[i][starty] = k++;
41
42 starty++;
43 if( starty>=n ) break;
44
45 }
46 return v;
47 }
48 };
spiral matrix 2
1 class Solution {
2 public:
3
4 vector<int> spiralOrder(vector<vector<int> > &matrix) {
5 // Start typing your C/C++ solution below
6 // DO NOT write int main() function
7
8 vector<int> v;
9 int rows;
10 int cols;
11 rows = matrix.size();
12 if( rows == 0 ) return v;
13 cols = matrix[0].size();
14 if( cols == 0 ) return v;
15
16 int m = rows;
17 int n = cols;
18 int startx = 0,starty=0;
19
20 while( 1 )
21 {
22 for(int i=starty; i<n; i++)
23 v.push_back( matrix[startx][i] );
24
25 startx ++;
26 if( startx >= m ) break;
27
28 for(int i=startx; i<m; i++)
29 v.push_back( matrix[i][n-1] );
30
31 n--;
32 if( starty>=n ) break;
33
34
35 //startx = m-1;
36 for(int i=n-1; i>=starty; i--)
37 v.push_back( matrix[m-1][i] );
38
39 m--;
40 if( startx >= m ) break;
41
42 for(int i=m-1; i>=startx; i--)
43 v.push_back( matrix[i][starty] );
44
45 starty++;
46 if( starty>=n ) break;
47
48 }
49 return v;
50 }
51 };
原文链接: https://www.cnblogs.com/jumpinGGrass/p/3171964.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/94624
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!