class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
vector<int> result;
if(matrix.size() == 0 || matrix[0].size() == 0) //对输入参数的检查
return result;
int rowBegin = 0;
int rowEnd = matrix.size() - 1;
int colBegin = 0;
int colEnd = matrix[0].size()-1;
result.resize((rowEnd+1)*(colEnd +1));
int cnt = 0;
while (rowBegin <= rowEnd && colBegin <= colEnd)
{
for (int i = colBegin; i <= colEnd ; i++) //traverse right
{
//result.push_back(matrix[rowBegin][i]);
result[cnt] = matrix[rowBegin][i];
cnt++;
}
rowBegin++;
for (int i = rowBegin; i <= rowEnd; i++) // traverse down
{
//result.push_back(matrix[i][colEnd]);
result[cnt] = matrix[i][colEnd];
cnt++;
}
colEnd--;
if (rowBegin <= rowEnd)
{
for (int i = colEnd; i >= colBegin; i--) //traverse left
{
//result.push_back(matrix[rowEnd][i]);
result[cnt] = matrix[rowEnd][i];
cnt++;
}
}
rowEnd--;
if (colBegin <= colEnd) //traverse up
{
for (int i = rowEnd; i >= rowBegin; i--)
{
//result.push_back(matrix[i][colBegin]);
result[cnt] = matrix[i][colBegin];
cnt++;
}
}
colBegin++;
}
return result;
}
};
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
vector<int> result;
if(matrix.size() == 0 || matrix[0].size() == 0) //对输入参数的检查
return result;
int rowBegin = 0;
int rowEnd = matrix.size() - 1;
int colBegin = 0;
int colEnd = matrix[0].size()-1;
result.resize((rowEnd+1)*(colEnd +1));
int cnt = 0;
while (rowBegin <= rowEnd && colBegin <= colEnd)
{
for (int i = colBegin; i <= colEnd ; i++) //traverse right
{
//result.push_back(matrix[rowBegin][i]);
result[cnt] = matrix[rowBegin][i];
cnt++;
}
rowBegin++;
for (int i = rowBegin; i <= rowEnd; i++) // traverse down
{
//result.push_back(matrix[i][colEnd]);
result[cnt] = matrix[i][colEnd];
cnt++;
}
colEnd--;
if (rowBegin <= rowEnd)
{
for (int i = colEnd; i >= colBegin; i--) //traverse left
{
//result.push_back(matrix[rowEnd][i]);
result[cnt] = matrix[rowEnd][i];
cnt++;
}
}
rowEnd--;
if (colBegin <= colEnd) //traverse up
{
for (int i = rowEnd; i >= rowBegin; i--)
{
//result.push_back(matrix[i][colBegin]);
result[cnt] = matrix[i][colBegin];
cnt++;
}
}
colBegin++;
}
return result;
}
};