Spiral Matrix
Total Accepted: 11102 Total
Submissions: 53832My Submissions
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]
.
注意m、n作为标识量(or 状态量),控制着循环状态转移
class Solution { public: vector<int> spiralOrder(vector<vector<int> > &matrix) { vector<int> res; int x=-1,y=0;/// @@巧妙设置起点 int n=matrix.size(); if(n==0) return res; int m=matrix[0].size(); while(m>0&&n>0){ //right for(int i=0;i<m;i++){ x+=1; res.push_back(matrix[y][x]); } n--; if(n==0||m==0) break;///@@error:here should have a break condition: n==0 or m==0 all will cause the loop stop for(int i=0;i<n;i++){ y+=1; res.push_back(matrix[y][x]); } m--; if(n==0||m==0) break; for(int i=0;i<m;i++){ x-=1; res.push_back(matrix[y][x]); } n--; if(n==0||m==0) break; for(int i=0;i<n;i++){ y-=1; res.push_back(matrix[y][x]); } m--; if(n==0||m==0) break; } return res; } };