您的位置:首页 > 其它

螺旋矩阵

2015-12-05 22:38 267 查看
给定一个包含 m x n 个要素的矩阵,(m 行, n 列),按照螺旋顺序,返回该矩阵中的所有要素。

您在真实的面试中是否遇到过这个题?

Yes

样例

给定如下矩阵:
[
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]

应返回
[1,2,3,6,9,8,7,4,5]


class Solution {
public:
/**
* @param matrix a matrix of m x n elements
* @return an integer array
*/
vector<int> spiralOrder(vector<vector<int>>& matrix) {
// Write your code here
vector<int> result;
int m = matrix.size();
if (m < 1)
{
return result;
}
int n = matrix[0].size();
if (n < 1)
{
return result;
}

int left = 0;
int top = 0;
int right = n-1;
int bottom = m-1;
int total = m*n;
int num = 0;
int i = 0;
int j = 0;

while (num < total)
{
while (j <= right)
{
result.push_back(matrix[i][j]);
j++;
num++;
}
if (num == total)
{
break;
}
i++;
j = right;
top++;
while (i <= bottom)
{
result.push_back(matrix[i][j]);
i++;
num++;
}
if (num == total)
{
break;
}
i = bottom;
j--;
right--;
while (j >= left)
{
result.push_back(matrix[i][j]);
j--;
num++;
}
if (num == total)
{
break;
}
i--;
j = left;
bottom--;
while (i >= top)
{
result.push_back(matrix[i][j]);
i--;
num++;
}
if (num == total)
{
break;
}
i = top;
j++;
left++;
}

return result;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: