顺时针打印矩阵
顺时针打印矩阵
http://www.nowcoder.com/questionTerminal/9b4c81a02cd34f76be2659fa0d54342a
用一个二维标记数组来标记访问过的数据
class Solution {
public:
vector<int> printMatrix(vector<vector<int> > matrix) {
int row = matrix.size(), col = matrix[0].size();
vector<vector<int> > visited(row, vector<int> (col, 0));
vector<int> print_res;
int x = 0, y = -1;
bool flag = true;
while(true)
{
if(y + 1 < col && visited[x][y + 1] == 0 && !(x - 1 > 0 &&
visited[x - 1][y] == 0))
{
print_res.push_back(matrix[x][++y]);
visited[x][y] = 1;
continue;
}
if(x + 1 < row && visited[x + 1][y] == 0)
{
print_res.push_back(matrix[++x][y]);
visited[x][y] = 1;
continue;
}
if(y - 1 >= 0 && visited[x][y - 1] == 0)
{
print_res.push_back(matrix[x][--y]);
visited[x][y] = 1;
continue;
}
if(x - 1 >= 0 && visited[x - 1][y] == 0)
{
print_res.push_back(matrix[--x][y]);
visited[x][y] = 1;
continue;
}
flag = false;
if(!flag) break;
}
return print_res;
}
};
