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 };
posted on 2013-07-04 17:23 jumping_grass 阅读(135) 评论(0) 收藏 举报
 
                    
                 
                
            
         
 浙公网安备 33010602011771号
浙公网安备 33010602011771号