spiral matrix

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

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月10日 上午2:43
下一篇 2023年2月10日 上午2:43

相关推荐