题目如下
解题思路
和ccf的z字输出很像,就是四边嘛,给个值,一直缩小,然后输出
c++代码
class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
if (matrix.empty()) return {};
vector<int> res;
int l = 0; // 左
int r = matrix[0].size() - 1; // 右
int u = 0; // 上
int d = matrix.size() - 1; // 下
while(true) {
for (int i = l; i <= r; i++) {
res.emplace_back(matrix[u][i]);
}
if (++u > d) break;
for (int i = u; i <= d; i++) {
res.emplace_back(matrix[i][r]);
}
if (l > --r) break;
for (int i = r; i >= l; i--) {
res.emplace_back(matrix[d][i]);
}
if (u > --d) break;
for (int i = d; i >= u; i--) {
res.emplace_back(matrix[i][l]);
}
if (++l > r) break;
}
return res;
}
};