Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.
For example,
Given the following matrix:
[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ]You should return
[1,2,3,6,9,8,7,4,5].
T:
Index manipulating.
A:
class Solution {
public:
vector< in t> spiralOrder(vector< vector< int > > &matrix) {
vector< in t> ret;
int m=matrix.size();
if(m == 0) {
return ret;
}
int n=matrix[0].size();
int i=0;
int j=0;
while(m > 0 && n > 0) {
for(int k=0; k < n; k++) {
ret.push_back(matrix[i][j]);
j++;
}
if(m == 1) {
break;
}
i++;
j--;
for(int k=1; k < m; k++) {
ret.push_back(matrix[i][j]);
i++;
}
if(n==1) {
break;
}
j--;
i--;
for(int k=1; k < n; k++) {
ret.push_back(matrix[i][j]);
j--;
}
if(m <= 2) {
break;
}
i--;
j++;
for(int k=2; k < m; k++) {
ret.push_back(matrix[i][j]);
i--;
}
j++;
i++;
m-=2;
n-=2;
}
return ret;
}
};
No comments:
Post a Comment