class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param matrix int整型vector<vector<>>
* @return int整型vector
*/
vector<int> spiralOrder(vector<vector<int> >& matrix) {
// write code here
//有点像贪吃蛇的写法
vector<int>ans;
int n = matrix.size();
if (n == 0)return ans;
int up = 0, down = n - 1;
int left = 0, right = matrix[0].size() - 1;
while (left <= right && up <= right) {
//--->
for (int i = left; i <= right; i++) {
ans.push_back(matrix[up][i]);
}
// |
// |
//\ /
up++;
if (up > down)break;
for (int i = up; i <= down; i++) {
ans.push_back(matrix[i][right]);
}
////<---
right--;
if (left > right)break;
for (int i = right; i >= left; i--) {
ans.push_back(matrix[down][i]);
}
// / \
// |
// |
down--;
if (up > down)break;
for (int i = down; i >= up; i--) {
ans.push_back(matrix[i][left]);
}
left++;
if (left > right)break;
}
return ans;
}
};