输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
样例
输入:
[
[1, 2, 3, 4],
[5, 6, 7, 8],
[9,10,11,12]
]
输出:[1,2,3,4,8,12,11,10,9,5,6,7]
class Solution {
public:
vector<int> printMatrix(vector<vector<int> > matrix) {
int n = 0,m = 0;
n = matrix.size();
if(n != 0) m = matrix[0].size();
int i = 0,j = -1;
int vis[n + 1][m + 1];memset(vis,0,sizeof(vis));
int cnt = n * m;
vector<int>ans;
while(cnt) {
while(j + 1 < m && !vis[i][j + 1]) {
cnt--;
vis[i][j + 1] = 1;
j++;ans.push_back(matrix[i][j]);
}
while(i + 1 < n && !vis[i + 1][j]) {
cnt--;
vis[i + 1][j] = 1;
i++;ans.push_back(matrix[i][j]);
}
while(j - 1 >= 0 && !vis[i][j - 1]) {
cnt--;
vis[i][j - 1] = 1;
j--;ans.push_back(matrix[i][j]);
}
while(i - 1 >= 0 && !vis[i - 1][j]) {
cnt--;
vis[i - 1][j] = 1;
i--;ans.push_back(matrix[i][j]);
}
}
return ans;
}
};