Spiral Matrix
废话不多说,直接上代码
<span style="font-size:24px;">class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
vector<int> ret;
if(matrix.empty())return ret;
int n=matrix.size();
int m=matrix[0].size();
int k = 1, i = 0;
while(true)
{
int j = i;
// four steps
while( j < m - i ){ // 1. horizonal, left to right
ret.push_back(matrix[i][j++]);
k++;
}
if(k>n*m)break;
j = i + 1;
while( j < n - i ){ // 2. vertical, top to bottom
ret.push_back(matrix[j++][m-i-1]);
k++;
}
if(k>n*m)break;
j = m - i - 2;
while( j > i ){ // 3. horizonal, right to left
ret.push_back(matrix[n-i-1][j--]);
k++;
}
if(k>n*m)break;
j = n - i - 1;
while( j > i ) { // 4. vertical, bottom to top
ret.push_back(matrix[j--][i]);
k++;
}
if(k>n*m)break;
i++; // next loop
}
return ret;
}
};</span>