看了我的螺旋矩阵的题目,直接一刀秒蛇形/螺旋矩阵的题目
先贴上相关的题目:大家可以都去写一下
题目来源 | 题目链接 |
---|---|
pat | 1105 Spiral Matrix (25分) |
leetcode | 59. 螺旋矩阵 II |
leetcode | 54. 螺旋矩阵 |
代码如下:
class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
vector<int> ans;
//使用偏移量法去做
int n=matrix.size(),m=matrix[0].size();
if(n==0) return ans;
vector<vector<bool>> st(n,vector<bool>(m));
int dx[4]={0,1,0,-1},dy[4]={1,0,-1,0};
for(int i=0,x=0,y=0,d=0;i<m*n;i++){
ans.push_back(matrix[x][y]);
//如果碰到边界,那么就需要去进行转变方向
int a=x+dx[d],b=y+dy[d];
st[x][y]=true;
if(a<0||a>=n||b<0||b>=m||st[a][b]){
d=(d+1)%4;
a=x+dx[d],b=y+dy[d];
}
x=a,y=b;
}
return ans;
}
};