class Solution {
public:
vector spiralOrder(vector>& matrix) {
vector res;
if(matrix.empty()) return res;
int t=0,d=matrix.size()-1;
int l=0,r=matrix[0].size()-1;
while(1){
for(int i=l;i<=r;i++){
res.push_back(matrix[t][i]);
}
if(++t>d) break;
for(int i=t;i<=d;i++){
res.push_back(matrix[i][r]);
}
if(--r=l;i--){
res.push_back(matrix[d][i]);
}
if(--d=t;i--) {
res.push_back(matrix[i][l]);
}
if(++l>r) break;
}
return res;
}
};



