码迷,mamicode.com
首页 > 其他好文 > 详细

Spiral Matrix

时间:2014-08-26 00:12:35      阅读:282      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   for   div   log   amp   sp   

Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.

For example,

Given the following matrix:

[
 [ 1, 2, 3 ],
 [ 4, 5, 6 ],
 [ 7, 8, 9 ]
]

You should return [1,2,3,6,9,8,7,4,5].

思路:对矩阵进行螺旋式遍历,依次进行向右、向下、向左、向上遍历。重复上述步骤。注意边界条件。

 1 class Solution {
 2 public:
 3     vector<int> spiralOrder( vector<vector<int>> &matrix ) {
 4         if( matrix.empty() || matrix[0].empty() ) { return vector<int>( 0 ); }
 5         int rows = matrix.size(), cols = matrix[0].size(), n_iter = ( min( rows, cols ) - 1 ) / 2;
 6         vector<int> spiral;
 7         for( int step = 0; step <= n_iter; ++step ) {
 8             // right
 9             for( int j = step; j < cols-step; ++j ) {
10                 spiral.push_back( matrix[step][j] );
11             }
12             // down
13             for( int i = step+1; i < rows-step; ++i ) {
14                 spiral.push_back( matrix[i][cols-step-1] );
15             }
16             // left
17             if( step < rows-step-1 ) {
18                 for( int j = cols-step-2; j >= step; --j ) {
19                     spiral.push_back( matrix[rows-step-1][j] );
20                 }
21             }
22             // up
23             if( step < cols-step-1 ) {
24                 for( int i = rows-step-2; i > step; --i ) {
25                     spiral.push_back( matrix[i][step] );
26                 }
27             }
28         }
29         return spiral;
30     }
31 };

 

Spiral Matrix

标签:style   blog   color   io   for   div   log   amp   sp   

原文地址:http://www.cnblogs.com/moderate-fish/p/3936022.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!