模拟

  • 用top,buttom,left,right表示范围
  • 顺时针单边后,修改边界值并判断,避免越界以及避免变量重复
class Solution {
public:
    vector<int> printMatrix(vector<vector<int> > matrix) {
        vector<int> v;
        if(!matrix.size())
        {
            return v;
        }
        int top=0;
        int buttom=matrix.size()-1;
        int left=0;
        int right=matrix[0].size()-1;
        int i=top,j=left;
        while(top<=buttom&&left<=right)
        {
           i=top;j=left;
           while(j<=right)
           {
            v.push_back(matrix[i][j++]);
           }
           top++;
           if(top>buttom)
           {
            break;
           }
           i=top;
           j=right;
           while(i<=buttom)
           {
            v.push_back(matrix[i++][j]);
           }
           right--;
           if(right<left)
           {
            break;
           }
           j=right;
           i=buttom;
           while(j>=left)
           {
            v.push_back(matrix[i][j--]);
           }
           buttom--;
           if(buttom<top)
           {
                break;
           }
           j=left;
           i=buttom;
           while(i>=top)
           {
            v.push_back(matrix[i--][j]);
           }
           left++;
           
        }
        return v;
    }
};