版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ShellDawn/article/details/88932559
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
vector<int> printMatrix(vector<vector<int> > matrix) {
if(matrix.size()<=0) return *(new vector<int>);
// right , down, left , up;
const int dirX[] = {0,1,0,-1};
const int dirY[] = {1,0,-1,0};
int X = matrix.size() ;
int Y = matrix[0].size();
int locX = 0;
int locY = -1;
vector<int> ans;
while(X>0 && Y>0){
X--;
//left to right;
for(int i=0;i<Y;i++){
locX += dirX[0];
locY += dirY[0];
ans.push_back(matrix[locX][locY]);
}
Y--;
// up to down;
for(int i=0;i<X;i++){
locX += dirX[1];
locY += dirY[1];
ans.push_back(matrix[locX][locY]);
}
if(X <= 0 || Y <= 0) break;
X--;
// right to left;
for(int i=0;i<Y;i++){
locX += dirX[2];
locY += dirY[2];
ans.push_back(matrix[locX][locY]);
}
Y--;
// down to up;
for(int i=0;i<X;i++){
locX += dirX[3];
locY += dirY[3];
ans.push_back(matrix[locX][locY]);
}
}
return ans;
}
};
int main(){
int X = 10;
int Y = 50;
vector<vector<int> > v;
for(int i=0;i<X;i++){
vector<int> t;
for(int j=1;j<=Y;j++){
t.push_back(i*Y+j);
}
v.push_back(t);
}
/*
for(int i=0;i<v.size();i++)
{
for(int j=0;j<v[0].size();j++){
printf("%d ",v[i][j]);
}
printf("\n");
}
*/
Solution S;
vector<int> test = S.printMatrix(v);
for(int i=0;i<test.size();i++)
printf("%d ",test[i]);
printf("\n");
return 0;
}