输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
示例 1:
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]
示例 2:
输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
输出:[1,2,3,4,8,12,11,10,9,5,6,7]
限制:
0 <= matrix.length <= 100
0 <= matrix[i].length <= 100
class Solution {
public:
vector retArr;
vector> data;
int rows,cols;
void draw(int start){
int endRow=rows-1-start,endCol=cols-1-start;
for(int i=start;i<=endCol;i++){
retArr.push_back(data[start][i]);
}
if(endRow>start){
for(int i=start+1;i<=endRow;i++){
retArr.push_back(data[i][endCol]);
}
}
if(endCol>start&&endRow>start){
for(int i=endCol-1;i>=start;i--){
retArr.push_back(data[endRow][i]);
}
}
if(endCol>start&&endRow-start>=2){
for(int i=endRow-1;i>start;i--){
retArr.push_back(data[i][start]);
}
}
}
vector spiralOrder(vector>& matrix) {
if(matrix.size()==0){
return retArr;
}
data=matrix;
int start=0;
rows=matrix.size(),cols=matrix[0].size();
while(rows>start*2&&cols>start*2){
draw(start);
start++;
}
return retArr;
}
};



