代码很直接,也很暴力
class Solution {
public:
vector<int> printMatrix(vector<vector<int> > matrix) {
vector<int> res;
int m = matrix.size();
if(m<=0) return res;
int n = matrix[0].size();
// 这里的up,down,left,right分别表示可打印的元素区域的上下左右的界限
int up = 0, down = m - 1, left = 0, right = n-1;
while(1) {
int flag = 0;
// from left to right
for(int i = up, j = left; j<=right;j++) {
flag = 1;
res.push_back(matrix[i][j]);
}
up ++;
if(!flag) break;
// from up to down
flag = 0;
for(int i = up, j = right; i<=down;i++) {
flag = 1;
res.push_back(matrix[i][j]);
}
right --;
if(!flag) break;
// from right to left
flag = 0;
for(int i = down, j = right; j>=left; j--) {
flag = 1;
res.push_back(matrix[i][j]);
}
down --;
if(!flag) break;
// from down to up
flag = 0;
for(int i = down, j = left;i>=up; i--) {
flag = 1;
res.push_back(matrix[i][j]);
}
left ++;
if(!flag) break;
}
return res;
}
}; 


京公网安备 11010502036488号