[Lc]54螺旋矩阵
Contents
题目
题解
就是分四种情况,从左到右,上到下,右到左,下到上循环遍历,和59题类似
- 时间复杂度$O(nm)$
- 空间复杂度$O(nm)$
class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
vector<int> result;
if(matrix.empty()) return result;//为空直接返回result
int d = matrix.size()-1;//下界
int u = 0;//上界
int r = matrix[0].size()-1;//右界
int l = 0;//左界
while(true){
for(int i=l;i<=r;i++) result.push_back(matrix[u][i]);//从左到右
if(++u>d) break;//两个功能,1.u+1,2.加之后若超出界限,则退出,下同
for(int i=u;i<=d;i++) result.push_back(matrix[i][r]);//从上到下
if(--r<l) break;
for(int i=r;i>=l;i--) result.push_back(matrix[d][i]);//从右到左
if(--d<u) break;
for(int i=d;i>=u;i--) result.push_back(matrix[i][l]);//从下到上
if(++l>r) break;
}
return result;
}
};
Author ChrisHRZ
LastMod 2020-05-17