[Lc]面试题29顺时针打印矩阵
Contents
题目
题解
直接迭代,四个方向将结果输入res,注意边界条件的判断
- 时间复杂度$O(n)$
- 空间复杂度$O(n)$
class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
vector<int> res;
if(matrix.empty()) return res;
int u=0, d=matrix.size()-1, l=0, r=matrix[0].size()-1;
while(true){
for(int i=l; i<=r; ++i) res.push_back(matrix[u][i]);
if(++u>d) break;
for(int i=u; i<=d; ++i) res.push_back(matrix[i][r]);
if(--r<l) break;
for(int i=r; i>=l; --i) res.push_back(matrix[d][i]);
if(--d<u) break;
for(int i=d; i>=u; --i) res.push_back(matrix[i][l]);
if(++l>r) break;//这四个判断条件注意别写错了
}
return res;
}
};
Author ChrisHRZ
LastMod 2020-05-17