螺旋输出矩阵 注意一行和一列的边界情况
class Solution { public: vector<int> spiralOrder(vector<vector<int> > &matrix) { vector<int>ans; ans.clear(); if(matrix.size() <= 0)return ans; int count = 0; int sum = matrix.size() * matrix[0].size(); int px = 0; int py = 0;</p> <pre><code> int xa = 0; int xb = matrix.size()-1; int ya = 0; int yb = matrix[0].size()-1; int dir = 0; while(count &lt; sum) { ans.push_back(matrix[px]1); switch(dir) { case 0: if(py == yb) { dir++; dir %= 4; xa++; px++; break; } py++; if(py == yb) { dir++; dir %= 4; xa++; } break; case 1: if(px == xb) { dir++; dir %= 4; yb--; py--; break; } px++; if(px == xb) { dir++; dir %= 4; yb--; } break; case 2: if(py == ya) { dir++; dir %= 4; xb--; px--; break; } py--; if(py == ya) { dir++; dir %= 4; xb--; } break; case 3: if(px == xa) { dir++; dir %= 4; ya++; py++; break; } px--; if(px == xa) { dir++; dir %= 4; ya++; } break; } count++; } return ans; } </code></pre> <p>};