题解 | #螺旋矩阵#
螺旋矩阵
http://www.nowcoder.com/practice/7edf70f2d29c4b599693dc3aaeea1d31
class Solution {
public:
vector<int> spiralOrder(vector<vector<int> >& matrix) {
vector<int> ans;
if(matrix.size() == 0)
return ans;
int startrow = 0, row = matrix.size(), col = matrix[0].size();
int num = row * col; //计算数字总数
int startcol = 0, circle = 0; //circle记录圈数
while (num) {
circle++;
for (int i = startcol; i < col - circle; ++i) {
ans.push_back(matrix[startrow][i]);
num--;
}
startcol = col - circle;
for (int i = startrow; num && i < row - circle; ++i) {
ans.push_back(matrix[i][startcol]);
num--;
}
startrow = row - circle;
for (int i = startcol; num && i >= circle - 1; --i) {
ans.push_back(matrix[startrow][i]);
num--;
}
startrow--;
startcol = circle - 1;
for (int i = startrow; num && i >= circle; --i) {
ans.push_back(matrix[i][startcol]);
num--;
}
startrow = circle;
startcol = circle;
}
return ans;
}
};