模拟题

螺旋矩阵

给定一个m x n大小的矩阵(m行,n列),按螺旋的顺序返回矩阵中的所有元素。 1

class Solution {
public:
   vector<int> spiralOrder(vector<vector<int> > &matrix) {
      if(matrix.size() == 0) return {};
      vector<int> result;
      int         top = 0, bottom = matrix.size() - 1;
      int         left = 0, right = matrix[0].size() - 1;
      while(top <= matrix.size() / 2 && left <= matrix[0].size() / 2) {
            // top l -> r
            for(int i = left; i <= right; ++i) result.push_back(matrix[top][i]);
            // left top -> bottom
            for(int i = top + 1; i <= bottom; ++i) result.push_back(matrix[i][right]);
            // bottom r -> l
            for(int i = right - 1; top != bottom && i >= left; --i) result.push_back(matrix[bottom][i]);
            // l bottom -> top
            for(int i = bottom - 1; left != right && i >= top + 1; --i) result.push_back(matrix[i][left]);
            ++top;
            --bottom;
            ++left;
            --right;
      }
      return {result.begin(), result.begin() + matrix.size()*matrix[0].size()};
   }
};
1

螺旋矩阵