class Solution {
public:
vector<int> printMatrix(vector<vector<int> > matrix) {
int m = matrix.size(); //行数
int n = matrix[0].size(); //列数</int></int>

    vector<int> res; //返回结果,若m*n == 0,则返回的也是空数组
    if(m == 0 || n == 0)
        return res;

    int c1 = 0; //要打印的列的起始下标
    int c2 = n-1; //要打印的列的终点下标
    int r1 = 0; //要打印的行的起始下标
    int r2 = m-1;//要打印的行的终点下标

    while(c1 <= c2 && r1<=r2) //存在可打印的元素
    {
        //打印顶行
        for(int j = c1; j<=c2; j++)
            res.push_back(matrix[r1][j]);
        r1++;
       //打印右列
        if(r1 <= r2)
        {
            for(int i = r1; i<=r2; i++)
                res.push_back(matrix[i][c2]);
            c2--;
        }else
            break;
        //打印底行
        if(c1<=c2)
        {
            for(int j = c2; j>=c1; j--)
                res.push_back(matrix[r2][j]);
            r2--;
        }else
            break;
        //打印左列
        if(r1<=r2)
        {
            for(int i = r2; i>=r1; i--)
                res.push_back(matrix[i][c1]);
            c1++;
        }else
            break;
    } 
    return res;
}

};