您的位置:首页 > 其它

[leetcode] 54. Spiral Matrix 解题报告

2016-01-02 11:11 309 查看
题目链接:https://leetcode.com/problems/spiral-matrix/

Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.

For example,

Given the following matrix:
[
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]


You should return
[1,2,3,6,9,8,7,4,5]
.

思路:设置两个表示行进方向的向量dx,dy,还有四个边界值,然后在其到达边界的时候改变各个变量的值。

代码如下:

class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
if(matrix.size() == 0) return {};
int m=matrix.size(), n=matrix[0].size();
vector<int> result;
int left=0, right=n-1, top=0, bot=m-1, x =0, y =0, dx=1, dy=0;
for(int i = 0; i < m*n; i++)
{
result.push_back(matrix[y][x]);
x += dx, y += dy;
if(dx == 1 && x>right) top++, x--, y++, dx=0, dy=1;
else if(dx ==-1 && x<left) bot--, x++, y--, dx=0, dy=-1;
else if(dy == 1 && y>bot) right--, x--, y--, dx=-1, dy=0;
else if(dy == -1&& y<top) left++, x++, y++, dx=1, dy=0;
}
return result;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: