循环,注意循环边界条件
//设置标记数组,永远关心下一位
const int maxn = 100+5;
class Solution {
private:
bool done[maxn][maxn];
public:
Solution()
{
memset(done,false,sizeof(done));
}
~Solution()
{
}
vector<int> printMatrix(vector<vector<int> > matrix) {
vector<int>vec;
vec.clear();
int r = matrix.size(),c = matrix[0].size();
int len = r*c;
int i , j ,cnt = 1;
vec.push_back(matrix[i=0][j=0]);
done[i][j]=true;
while(cnt<len)
{
while(j+1<c&&!done[i][j+1])
{
vec.push_back(matrix[i][++j]);
done[i][j]=true;
cnt++;
}
while(i+1<r&&!done[i+1][j])
{
vec.push_back(matrix[++i][j]);
done[i][j] = true;
cnt++;
}
while(j-1>=0&&!done[i][j-1])
{
vec.push_back(matrix[i][--j]);
done[i][j]=true;
cnt++;
}
while(i-1>=0&&!done[i-1][j])
{
vec.push_back(matrix[--i][j]);
done[i][j]=true;
cnt++;
}
}
return vec;
}
};