输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵:
[[1,2,3,4],
[5,6,7,8],
[9,10,11,12],
[13,14,15,16]]
则依次打印出数字
[1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10]
解:刚才实验室的人做测评,看了看去,进度好慢我,还是要加油啊
```cpp
class Solution {
public:
vector<int> printMatrix(vector<vector<int> > matrix) {
vector<int> result;
if(matrix.empty()) {
return result;
}
int top = matrix.size() - 1;
int right = matrix[0].size() - 1;
int left = 0;
int bottom = 0;
while (true) {
for (int i = left; i <= right; i++) {
result.push_back(matrix[bottom][i]);
}
if (++bottom > top) {
break;
}
for (int i = bottom; i <= top; i++) {
result.push_back(matrix[i][right]);
}
if (--right < left) {
break;
}
for (int i = right; i >=left; i--) {
result.push_back(matrix[top][i]);
}
if (--top < bottom) {
break;
}
for (int i = top; i >= bottom; i--) {
result.push_back(matrix[i][left]);
}
if (++left > right) {
break;
}
}
return result;
}
};
核心在于矩阵的收缩,即–right,–top