classSolution { public: vector<int> printMatrix(vector<vector<int> > matrix){ vector<int> res; int m = matrix.size(); int n = matrix[0].size(); if (m == 0 || n == 0) return res;
int num = m * n; int l=0, r=n-1, t=0, b=m-1; while (num > 0) { // 左 ——> 右,左闭右开区间,由于 m 与 n 不一定相等,一定要判断 num > 0 for (int i = l; i < r+1 && num > 0; ++i) { res.push_back(matrix[t][i]); num--; } t++; // 上 ——> 下 for (int i = t; i < b+1 && num > 0; ++i) { res.push_back(matrix[i][r]); num--; } r--; // 右 ——> 左 for (int i = r; i > l-1 && num > 0; --i) { res.push_back(matrix[b][i]); num--; } b--; // 下 ——> 上 for (int i = b; i > t-1 && num > 0; --i) { res.push_back(matrix[i][l]); num--; } l++; } return res; } };