目录
1.题目
给你一个 m
行 n
列的矩阵 matrix
,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
示例 1:
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5]
示例 2:
输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]] 输出:[1,2,3,4,8,12,11,10,9,5,6,7]
提示:
m == matrix.length
n == matrix[i].length
1 <= m, n <= 10
-100 <= matrix[i][j] <= 100
2.代码
class Solution {
public:
vector<int> ans;
int vis[11][11];
int dx[4] = {0,1,0,-1};
int dy[4] = {1,0,-1,0};
vector<int> spiralOrder(vector<vector<int>>& matrix) {
int n = matrix.size();
int m = matrix[0].size();
ans.clear();
memset(vis,0,sizeof(vis));
ans.push_back(matrix[0][0]);
vis[0][0]=1;
int d=1;
int x=0;
int y=0;
while(d<m*n)
{
for(int i=0;i<4;i++)
{
int xx = x+dx[i];
int yy = y+dy[i];
while(xx>=0&&xx<n&&yy>=0&&yy<m)
{
if(vis[xx][yy])
{
break;
}
ans.push_back(matrix[xx][yy]);
vis[xx][yy]=1;
x=xx;
xx=xx+dx[i];
y=yy;
yy=yy+dy[i];
d++;
}
}
}
return ans;
}
};