此题为转圈顺时针打印矩阵
思路:主要是如何实现顺时针这一功能,对于此可建立一同样大小的访问矩阵,如果按照原来的方向下一位置能找到未访问过的元素则打印该元素,否则顺时针90度变换方向。
class Solution {
public:
vector<int> printMatrix(vector<vector<int> > matrix) {
vector<int > result;
int row=matrix.size();
int col=0;
if(row>0)
col=matrix[0].size();
vector<vector<bool >> check(row,vector<bool>(col,false));
int x=0,y=0;
int index=0;
for(int i=0;i<row*col;i++)
{
if(check[x][y]==false)
{;}
else
{
//如果保持当前方向能找到未访问过的位置则继续,否则变换方向。
while(1)
{
if(index==0&&y+1>=0&&y+1<col&&check[x][y+1]==false)
{
y++;
break;
}
else if(index==1&&x+1>=0&&x+1<row&&check[x+1][y]==false)
{
x++;
break;
}
else if(index==2&&y-1>=0&&y-1<col&&check[x][y-1]==false)
{
y--;
break;
}
else if(index==3&&x-1>=0&&x-1<row&&check[x-1][y]==false)
{
x--;
break;
}
else
index++;
if(index==4)
index=0;
}
}
result.push_back(matrix[x][y]);
check[x][y]=true;
}
return result;
}
};