原题: LeetCode 54. 螺旋矩阵
借鉴自:传送门:
大体思路
设置四个变量,上下左右,来卡住。
class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
if(matrix.empty()) return {};
vector<int> ans;
int l = 0, r = matrix[0].size()-1, t = 0, b = matrix.size()-1;
while(1) {
// 从左到右
for(int i=l;i<=r;i++) ans.push_back(matrix[t][i]);
if(++t>b) break;
// 从上到下
for(int i=t;i<=b;i++) ans.push_back(matrix[i][r]);
if(--r<l) break;
// 从右到左
for(int i=r;i>=l;i--) ans.push_back(matrix[b][i]);
if(--b<t) break;
// 从下往上
for(int i=b;i>=t;i--) ans.push_back(matrix[i][l]);
if(++l>r) break;
}
return ans;
}
};